问题遇到的现象和发生背景
利用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差距过大,那么模型在测试集上表现应该也不佳?