如何在scikit中学习RFECV中的功能(sklearn)?

时间:2017-02-27 16:58:09

标签: python machine-learning scikit-learn sklearn-pandas

我使用了递归特征消除和交叉验证(rfecv),以便找到我所拥有的几个特征的最佳准确度分数(m = 154)。

rfecv = RFECV(estimator=logreg, step=1, cv=StratifiedKFold(2),
              scoring='accuracy')
rfecv.fit(X, y)

排名(rfecv.ranking_)和相关分数(rfecv.grid_scores_)让我感到困惑。从前13个功能(排名前10位)可以看出,他们的排名不是基于得分。我知道排名与交叉验证过程中排除功能的方式和时间有关。但那么得分与排名有何关系?我希望排名最高的功能得分最高。

Features/Ranking/Scores
b       1       0.692642743
a       1       0.606166207
f       1       0.568833672
i       1       0.54935204
l       2       0.607564808
j       3       0.613495238
e       4       0.626374391
l       5       0.581064621
d       6       0.611407556
c       7       0.570921354
h       8       0.570921354
k       9       0.576863707
g       10      0.576863707

1 个答案:

答案 0 :(得分:1)

image centerCrop不是第i个特征的分数,它是使用第i个特征子集训练时估计量得出的分数。

要理解这意味着什么,请记住递归特征消除(RFE)的工作原理是训练模型,评估模型,然后删除_grid_scores最不重要的特征,然后重复。

因此,step将是所有功能训练的估算者得分。 _grid_score[-1]将是已删除_grid_score[-2]个功能的估算工具的分数。 step将是已删除_grid_score[-3]个功能的估算工具的分数。

因此,网格分数不反映个别特征的评分。实际上,如果step大于1,则网格分数将少于特征。