SelectKBestはどのように機能しますか?


14

私はこのチュートリアルを見ていますhttps : //www.dataquest.io/mission/75/improving-your-submission

セクション8では、最良の機能を見つけると、次のコードが表示されます。

import numpy as np
from sklearn.feature_selection import SelectKBest, f_classif

predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked", "FamilySize", "Title", "FamilyId"]

# Perform feature selection
selector = SelectKBest(f_classif, k=5)
selector.fit(titanic[predictors], titanic["Survived"])

# Get the raw p-values for each feature, and transform from p-values into scores
scores = -np.log10(selector.pvalues_)

# Plot the scores.  See how "Pclass", "Sex", "Title", and "Fare" are the best?
plt.bar(range(len(predictors)), scores)
plt.xticks(range(len(predictors)), predictors, rotation='vertical')
plt.show()

決して使用されないため、k = 5は何をしているのですか(k = 1とk = "all"のどちらを使用しても、グラフにはすべての機能がリストされます)?どのようにして最良の機能が決定されますか?それらは、使用したい方法(ロジスティック回帰、ランダムフォレストなど)に依存しませんか?


k個の最高スコアに従って特徴を選択します。
Srini

回答:


11

SelectKBestクラスは、関数(この場合はf_classifですが、他の場合もあります)を使用して特徴をスコアリングし、「k最高スコアの特徴以外のすべてを削除」します。http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

つまり、その種のラッパーです。ここで重要なのは、特徴のスコアリングに使用する関数です。

sklearnの他の機能選択手法については、http://scikit-learn.org/stable/modules/feature_selection.htmlをご覧ください。

そして、はい、f_classifとchi2は、使用する予測方法に依存しません。


2

k。パラメータは、selector.fit_transform()を使用する場合に重要です。これは、機能セットが最適な「k」に削減された新しい配列を返します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.