sklearnを使用して複数ラベルのデータセットを使用して機能を選択したいと思っています。最後に、のラベルにあるというラベルの最後のセットを取得したいのですが、別のマシンラーニングパッケージで使用します。私はhereの方法を使うつもりでした。これはラベルごとに関連する機能を別々に選択しています。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を使用してマルチラベルデータセットのフィーチャ選択を行うより原理的な方法がありますか?
私が理解するところでは、sklearnの機能選択方法はバイナリ分類子用です。個々のラベルごとに選択した機能を個別に取得することはできますが、私の質問は、原則的にすべてのラベルにわたって機能する最終的な機能を決定する方法です。 – user2589328
私はあなたが何を意味しているか分かりません。たとえば、SelectKBestはモデルに依存しません。また、ドキュメントで最終的なフィーチャセットを取得する方法を示すRFEの例を見ることができます。 http:// scikit-learn。 さらに、入力から訓練されたベストフィーチャを選択するトランスフォーム機能を多く実装しています。 – Chris
しかし、その最終的なフィーチャセットは1つのクラシファイア用です。バイナリ関連性メソッドはマルチラベル分類問題を一連のバイナリ分類に分解するので、最終的なフィーチャセットは自分の多くのラベルのうちの1つにしか対応しません。個々のラベルごとに機能選択方法によって返される機能セットがありますが、選択した機能を組み合わせてすべてのラベルで機能する機能セットを作成したいと思います。 – user2589328