2017-02-27 157 views
0

我使用遞歸特徵消除和交叉驗證(rfecv)爲了找到我有的幾個特徵(m = 154)的最佳準確性分數。scikit學習(sklearn)中的特徵如何排在RFECV中?

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

的排名(rfecv.ranking_)和相關的得分(rfecv.grid_scores_)是混淆了我。正如你可以從排名前十的特徵(排名前十)中看到的,他們的排名不是基於分數。我知道排名與在交叉驗證過程中排除功能的方式和時間有關。但是,這個分數與排名有什麼關係?我希望排名最高的功能得分最高。

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 
+0

你錯誤地解釋了'grid_scores_'和'ranking_'。他們沒有任何關聯。 'grid_scores_'不是特徵分數。 –

+0

他們的得分是多少?你能詳細說明嗎?那麼排名是什麼呢?感謝您抽出寶貴的時間。 –

+0

從文檔:「交叉驗證得分,grid_scores_ [i]對應於第i個要素子集的CV得分。」它們不代表特徵的分數。它們表示在選擇某些特徵時評估者的得分。 –

回答

1

_grid_scores不是第i個特徵的分數,它是當與特徵的第i子集訓練所述估計所產生的得分。

要理解這意味着什麼,請記住遞歸特徵消除(RFE)通過訓練模型,評估模型,然後移除最不重要的特徵並重復。

因此,_grid_score[-1]將是在所有功能上訓練的評估者的得分。 _grid_score[-2]將被刪除的step功能的估計值的得分。 _grid_score[-3]將是評估人員的得分,其中2*step功能已刪除。

因此,網格分數並不反映個別特徵的評分。事實上,如果step大於1,則網格分數將比特徵少。

+0

非常感謝!我如何知道每個子集中的哪些功能? –

+0

這些功能按照與排名相反的順序排除。不幸的是,您不知道排名1特徵(即所選特徵)中排除特徵的順序。 – Nimrand