我正在使用cross_val_score()函数来计算适合我的R2
系数。这是我的代码:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = data.iloc[:,0:13]
y = data.iloc[:,13]
lin = LinearRegression()
MSE = cross_val_score(lin,X,y,scoring = 'neg_mean_squared_error',cv = 10)
MSE
array([ -9.28694671, -14.15128316, -14.07360615, -35.20692433,
-31.88511666, -19.83587796, -9.94726918, -168.37537954,
-33.32974507, -10.96041068])
MSE.mean()
-34.705255944525462
R2= cross_val_score(lin,X,y,cv = 10)
R2
array([ 0.73376082, 0.4730725 , -1.00631454, 0.64113984, 0.54766046,
0.73640292, 0.37828386, -0.12922703, -0.76843243, 0.4189435 ])
R2.mean()
0.20252899006052702
我发现这些结果特别是R2
结果很奇怪:
R2
分数非常“分散”。我执行相同的回归任务,并使用“ Rapidminer”计算分数,然后得到更多“逻辑”结果:
注意:我精确地证明,在使用Python和Rapidminer时,我得到相同的系数!!!!!!
他们在sklearn中有一些错误吗?有人可以用Python解释这些怪异的评分结果吗?
在这里您可以找到指向我的训练数据集(.csv文件)的链接,以便复制我观察到的行为:https://1drv.ms/u/s!Am7xh5YMVeT6gf8NMS9fZgpOpe6kbw
对决策树回归进行交叉验证后,我也得到了非常奇怪的分数结果,print(cross_val_score(clf, X, y, cv = 10, scoring='r2'))
[-4.50538082 -1.58428915 -2.65964619 -0.6336118 -2.41806702-3.45839104 -3.82097269 -0.10129517 0.20267893 -11.51823689]
没有交叉验证,我的分数是0.99