在 scikit learn(sklearn) 中,RFECV 中的特征是如何排序的?

Lia*_*nen 2 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)
Run Code Online (Sandbox Code Playgroud)

排名 ( 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
Run Code Online (Sandbox Code Playgroud)

Nim*_*and 5

_grid_scores 不是第 i 个特征的分数,它是估计器在用第 i 个特征子集训练时产生的分数。

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

因此,_grid_score[-1]将是在所有特征上训练的估计器的分数。 _grid_score[-2]将是step移除特征的估计器的分数。 _grid_score[-3]将是2*step移除特征的估计器的分数。

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

  • 特征按照与排名相反的顺序被淘汰。不幸的是,您不知道 1 级特征(即所选特征)中特征被消除的顺序。 (3认同)