1

SKlearn のパイプライン モデルを使用して、ランダム フォレスト分類器に送信される結合された機能を抽出および構築していますが、一部の機能エクストラクタは後で削除または追加できます。次の構造を検討してください。

model = Pipeline([
                  ('feature_extract',
                     FeatureUnion([
                                   ('feature A', extracorA()),
                                   ('feature B', ExtractorB()),
                                   ('feature C', FeatureUnion([
                                                      ('c1', C1Extractor())
                                                      ('c2', C2Extractor())]))
                                                                               )]),
                   ('random_forest', RandomForestRegressor(...)))])

を調べて、ランダム フォレストの予測を改善したいと思います。

feature_importances_

RandomForstRegressor のプロパティ

次を使用してリストを取得できました。

model._final_estimator.feature_importances_

そして今、feature_importances_ インデックスの列番号をパイプラインの機能名/ステップに動的にリンクしたいと思います。

フィーチャー ユニオン内でフィーチャー名を保存/取得するための推奨される方法はありますか? この問題にどのように対処しますか?

4

1 に答える 1

-1

すべてを動的な形式に保つには、以下の関数を別のクラスの変換実装として使用し、クラスのオブジェクトをパイプラインの一部にすることができます。スコアリング パラメータを変更することもできます。パイプラインの一部としてのグリッド検索は、あなたが探しているものだと思います...

def best_config(model, parameters, train_instances, judgements):
    clf = GridSearchCV(model, parameters, cv=5,
                       scoring="accuracy", verbose=5, n_jobs=4)
    clf.fit(train_instances, judgements)
    best_estimator = clf.best_estimator_

    return [str(clf.best_params_), clf.best_score_,
            best_estimator]
于 2016-04-04T09:39:09.053 に答える