【发布时间】:2015-07-31 23:43:08
【问题描述】:
Scikit 在我将其用于机器学习时过度拟合。例如,我使用decisiontree 进行回归。
r_value 的训练集给了我 0.9998;
r_value 的测试集给了我 0.3134;
经过交叉验证,测试集给了我 0.1695 的 r_value。
如果我使用cross_val_predict 函数,我是否必须添加测试集目标值?或者它会给我一个错误?我想知道如何避免输入测试集目标值?
dt=tree.DecisionTreeRegressor().fit(feature,target)
slope,intercept,r_value,p_value,std_err=stats.linregress(target,dt.predict(feature))
print r_value
slope,intercept,r_value,p_value,std_err=stats.linregress(target_test,dt.predict(feature_test))
print r_value
predicted=cross_validation.cross_val_predict(dt, feature_test,target_test,cv=5)
slope,intercept,r_value,p_value,std_err=stats.linregress(target_test,predicted)
print r_value
【问题讨论】:
-
有什么奇怪的?您所做的只是调用库函数并打印答案。为什么你认为你有问题?
-
因为训练集给了我高 r_value 而测试集给了我低 r_value。如何获得训练集和测试集的相似 r_values?
标签: python machine-learning scikit-learn