2016-11-08 22 views
0

fitメソッドで訓練された分類子の訓練に使用される特徴名のリストを取得する方法はありますか?目に見えないデータに適用する前にこの情報を入手したいと思います。 トレーニングに使用されるデータはパンダDataFrameです。私のケースでは、分類器はRandomForestClassifierです。分類器から訓練特徴名のリストを取得

答えて

1

ドキュメントと以前の経験に基づいて、分割の少なくとも1つで考えられる機能のリストを取得する方法はありません。

予測にすべての機能を使用したくないという懸念はありますか?トレーニングに実際に使用されたものだけですか?この場合、私はfeature_importances_をフィッティングしてリストアップすることを提案し、関係のないように思われない機能を除去します。次に、関連するフィーチャだけで新しいモデルを訓練し、それらのフィーチャを予測にも使用します。

1

トレーニング用に選択された機能を知る必要はありません。予測ステップの間に、適合する分類器にと同じ機能を与えてください。学習フェーズの間に使用してください。

ランダムフォレストクラシファイアは、分割を行う機能のみを使用します。それらは第1段階で学んだものと同じです。他は考慮されません。

あなたテストデータの形状トレーニングデータと同じでない場合それは、テストデータが使用する決定木の分割のために使用されるすべての機能が含まれている場合でも、エラーがスローされます。

ランダムフォレストは、すべての機能が少なくとも一度使用される可能性が高い(sklearnestimatorsと呼ばれる)あなたの意思決定ツリーのための機能のランダムな選択をするために、より多くの何。


しかしあなたが使用する機能を知りたい場合、あなたは一度だけを装着し、あなたの分級の属性n_features_feature_importances_を呼び出すことができます。

hereを見ると、使用した最も重要な機能の名前を取得する方法がわかります。

+0

解決策は、機能の数だけで、名前は返しません。私は予測段階で、名前を提供する必要はなく、同じ機能を提供する必要があることを知っています。しかし、私の場合は、トレーニングのために選択された機能(そしてこれが重要であれば列の順序)は何かを事前に知ることはできません。 – user6903745

+0

@ user6903745:トレーニング用に選択された機能を知りたいのはなぜですか? – MMF

+0

私は、引数として分類子をとる関数を作成しています。先験的なことが分からないかもしれない変数のリストをハードコードしたり、タイプミスを避けたり、変数の無限リストを入力するだけでは、それを分類器自体に格納しておくとよいでしょう。 – user6903745

関連する問題