7

マルチラベル シナリオで、scikit-learn パイプラインの一部として機能の選択を行おうとしています。私の目的は、与えられた k に対して、最良の K 個の特徴を選択することです。

簡単かもしれませんが、そのようなシナリオで選択された機能のインデックスを取得する方法がわかりません。

通常のシナリオでは、次のようなことができます。

anova_filter = SelectKBest(f_classif, k=10)

anove_filter.fit_transform(data.X, data.Y)

anova_filter.get_support()

しかし、マルチラベルのシナリオでは、私のラベルの次元は #samples X #unique_labels であるため、fit と fit_transform は次の例外を生成します: ValueError: 入力形状が正しくありません

ディメンション [#samples] のラベルが必要なため、これは理にかなっています

マルチラベルのシナリオでは、次のようなことをするのが理にかなっています:

clf = Pipeline([('f_classif', SelectKBest(f_classif, k=10)),('svm', LinearSVC())])

multiclf = OneVsRestClassifier(clf, n_jobs=-1)

multiclf.fit(data.X, data.Y)

しかし、私が取得しているオブジェクトは、get_support関数を持たないsklearn.multiclass.OneVsRestClassifier型です。パイプライン中に使用される場合、トレーニング済みの SelectKBest モデルを取得するにはどうすればよいですか?

4

1 に答える 1