sklearn を使用して、マルチラベル データセットで特徴選択を実行しようとしています。ラベル全体の機能の最終セットを取得したいと考えています。これを別の機械学習パッケージで使用します。ここで見た方法を使用することを計画していました。これは、各ラベルに関連する機能を個別に選択します。
from sklearn.svm import LinearSVC
from sklearn.feature_selection import chi2, SelectKBest
from sklearn.multiclass import OneVsRestClassifier
clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
('svm', LinearSVC())])
multi_clf = OneVsRestClassifier(clf)
次に、これを使用して、含まれる機能のインデックスをラベルごとに抽出する予定です。
selected_features = []
for i in multi_clf.estimators_:
selected_features += list(i.named_steps["chi2"].get_support(indices=True))
さて、私の質問は、最終モデルに含める選択した機能をどのように選択すればよいですか? すべての固有の機能 (1 つのラベルにのみ関連する機能を含む) を使用することも、より多くのラベルに関連する機能を選択するために何かを行うこともできます。
私の最初のアイデアは、特定の機能が選択されたラベルの数のヒストグラムを作成し、目視検査に基づいてしきい値を特定することです。私の懸念は、この方法が主観的であることです。sklearn を使用してマルチラベル データセットの機能選択を実行するより原則的な方法はありますか?