7

RFECVの読み方grid_scores_ranking_値を理解しようとしています。ドキュメントの主な例を次に示します。

from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFECV
from sklearn.svm import SVR
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
selector = RFECV(estimator, step=1, cv=5)
selector = selector.fit(X, y)
selector.support_ 
array([ True,  True,  True,  True,  True,
        False, False, False, False, False], dtype=bool)

selector.ranking_
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])

私はどのように読むべきranking_ですgrid_scores_か?ランキング低いほど良いですか?(またはその逆?)。これを質問する理由は、ランキング値が最も高い機能は通常、.grid_scores_

しかし、何かがあれば、ranking = 1それはグループの中で最高にランク付けされたことを意味するべきではありませんか? . これはドキュメントにも書かれていることです:

"選択された (つまり、最良と推定された) 機能にランク 1 が割り当てられます"

しかし、実際のデータを使用して次の例を見てみましょう。

> rfecv.grid_scores_[np.nonzero(rfecv.ranking_ == 1)[0]]
0.0

最高のランキングを持つ機能は、最高の*スコア* を持ちます。

> rfecv.grid_scores_[np.argmax(rfecv.ranking_ )]
0.997

上記の例では、ranking=1のフィーチャのスコアが最も低いことに注意してください。

ドキュメントの図:

この件に関して、ドキュメントのこの図yでは、軸が になっていますが、どちらが(?) をスコアリング関数として使用したか"number of misclassifications"をプロットしています。ラベルは読むべきではありませんか?(低いほど 良い) の 代わり に(高い ほど良い)grid_scores_'accuracy'yaccuracy"number of misclassifications"

4

1 に答える 1