为什么我的机器学习模型在训练集上的R^2接近1,而在交叉验证集上的R^2只有0.6左右,而在测试集上的R^2也接近1

问题遇到的现象和发生背景

利用ExtraTreesRegressor进行回归,发现训练集上的R^2接近1,而在交叉验证集上的R^2只有0.6左右,而在测试集上的R^2也接近1

问题相关代码,请勿粘贴截图
def model(X,y,regression,**kwargs):
    t0 = time.time()
    kf = KFold(5,shuffle = True,random_state = 1)
    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.3,random_state = 1)
    reg = regression(**kwargs)
    reg.fit(X,y)
    r2 = cross_val_score(reg,X_train,y_train,scoring = 'r2',cv = kf).mean()
    pred = reg.predict(X_test)
    r2_t = r2_score(y_test,pred)
    t1 = '%.3f s' %(time.time() - t0)
    return r2,t1,r2_t
运行结果及报错内容

model(X,y,ETR)
(0.6136022030545359, '142.728 s', 0.9833922526081965)

我的解答思路和尝试过的方法
我想要达到的结果

如果训练集和交叉验证集上的R^2差距过大,那么模型在测试集上表现应该也不佳?

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。