Scikit Learn(Sklearn)中RFECV中的功能如何



我使用了递归特征消除和交叉验证(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

_grid_scores不是第i-theter的得分,它是用第i-phther table训练的估算器所产生的分数。

要了解这意味着什么,请记住递归功能消除(RFE)通过训练模型,评估它,然后删除step最不重要的特征并重复。

因此,_grid_score[-1]将是在所有功能上训练的估算器的分数。_grid_score[-2]将是删除具有step功能的估算器的分数。_grid_score[-3]将是删除2*step功能的估算器的分数。

因此,网格分数不能反映单个特征的评分。实际上,如果步骤大于1,则网格分数将比功能少。

最新更新