scikit learn(sklearn) 中 RFECV 中的特征是如何排名的?
How are features ranked in RFECV in scikit learn(sklearn)?
我使用递归特征消除和交叉验证 (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 个特征的分数,它是估计器在使用第 i 个特征子集训练时产生的分数。
要理解这意味着什么,请记住递归特征消除 (RFE) 的工作原理是训练模型、评估模型,然后移除 step
最不重要的特征,然后重复。
因此,_grid_score[-1]
将是在所有特征上训练的估计器的分数。 _grid_score[-2]
将是移除了 step
特征的估计器的分数。 _grid_score[-3]
将是移除了 2*step
个特征的估计器的分数。
因此,网格分数不反映单个特征的得分。事实上,如果step大于1,grid scores会比features少。
我使用递归特征消除和交叉验证 (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 个特征的分数,它是估计器在使用第 i 个特征子集训练时产生的分数。
要理解这意味着什么,请记住递归特征消除 (RFE) 的工作原理是训练模型、评估模型,然后移除 step
最不重要的特征,然后重复。
因此,_grid_score[-1]
将是在所有特征上训练的估计器的分数。 _grid_score[-2]
将是移除了 step
特征的估计器的分数。 _grid_score[-3]
将是移除了 2*step
个特征的估计器的分数。
因此,网格分数不反映单个特征的得分。事实上,如果step大于1,grid scores会比features少。