【发布时间】:2020-01-08 21:15:59
【问题描述】:
我正在使用sklearn.feature_selection.RFECV:
ref = RFECV(lr, step=1, cv =5, scoring="r2")
ref.fit(X_ndarr, y_ndarr)
print(ref.grid_scores_)
我明白了:
[ 0.9316829 0.93472609 0.79440118 -2.37744438 -1.20559428
-1.35899883 -0.90087801 -1.02047363 -0.54169276 -0.08116821
-0.00685128 0.1561999 -0.26433411 -0.27843449 -0.32703359
-0.32782641 -0.30881354 0.11878835 0.08175137 0.04300757
0.0378917 0.04534877]
RFECV 在每个步骤中删除最不重要的特征,因此例如得分10 个功能应该是任何 10 个功能的最佳得分,而当我使用选定的 10 个功能(使用另一种方式)运行以下代码时:
from sklearn.model_selection import cross_val_score
lr = linear_model.LinearRegression()
scores = cross_val_score(lr, X_top10_ndarr, y_ndarr, cv=5) # top10 features
然后我得到:
交叉验证分数:[0.96706997 0.9653103 0.96386666 0.96017565 0.96603127]
所有分数都在 0.96 左右,而来自RFECV 的 10 个特征的分数是 -0.08。
这里到底发生了什么?
EDIT1:选择的特征数量为2,ranking_如下:
[ 4 7 1 6 3 2 8 11 5 10 21 9 12 14 13 15 16 19 18 17 1 20] p>
【问题讨论】:
标签: python scikit-learn linear-regression cross-validation rfe