0

複数の分類子のグリッド検索を構築しており、相互検証で再帰的な特徴の除去を使用したいと考えています。scikit-learn を使用した再帰的機能の除去とグリッド検索で提供されているコードから始めました。以下は私の作業コードです:

param_grid = [{'C': 0.001}, {'C': 0.01}, {'C': .1}, {'C': 1.0}, {'C': 10.0},
              {'C': 100.0}, {'fit_intercept': True}, {'fit_intercept': False},
              {'penalty': 'l1'}, {'penalty': 'l2'}]

estimator = LogisticRegression()
selector = RFECV(estimator, step=1, cv=5, scoring="roc_auc")
clf = grid_search.GridSearchCV(selector, {"estimator_params": param_grid},
                               cv=5, n_jobs=-1)
clf.fit(X,y)
print clf.best_estimator_.estimator_
print clf.best_estimator_.ranking_
print clf.best_estimator_.score(X, y)

「estimator_params」パラメーターが 0.18 で削除されているように見えるため、DeprecationWarning を受け取りました。4行目で使用する正しい構文を見つけようとしています。

しようとしています...

param_grid = [{'C': 0.001}, {'C': 0.01}, {'C': .1}, {'C': 1.0}, {'C': 10.0},
              {'C': 100.0}, {'fit_intercept': True}, {'fit_intercept': False},
              {'fit_intercept': 'l1'}, {'fit_intercept': 'l2'}]
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)

戻り値 ValueError: パラメータ値はリストでなければなりません。と...

param_grid = {"penalty": ["l1","l2"],
           "C": [.001,.01,.1,1,10,100],
           "fit_intercept": [True, False]}
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)

ValueError を返します: エスティメータ RFECV のパラメータ ペナルティが無効です。で使用可能なパラメータのリストを確認してくださいestimator.get_params().keys()。キーを確認すると、「C」、「fit_intercept」、「penalty」の 3 つすべてがパラメーター キーとして表示されます。しようとしています...

param_grid = {"estimator__C": [.001,.01,.1,1,10,100],
              "estimator__fit_intercept": [True, False],
              "estimator__penalty": ["l1","l2"]}
clf = grid_search.GridSearchCV(selector, param_grid,
                               cv=5, n_jobs=-1)

実行が完了することはないため、そのタイプのパラメーター割り当てがサポートされていないと推測しています。

今のところ、警告を無視するように設定していますが、0.18 の適切な構文でコードを更新したいと思います。任意の支援をいただければ幸いです!

4

1 に答える 1

0

以前 SO に投稿された質問への回答: https://stackoverflow.com/a/35560648/5336341。答えてくれたPaulo Alvesに感謝します。

関連コード:

params = {'estimator__max_depth': [1, 5, None],
          'estimator__class_weight': ['balanced', None]}
estimator = DecisionTreeClassifier()
selector = RFECV(estimator, step=1, cv=3, scoring='accuracy')
clf = GridSearchCV(selector, params, cv=3)
clf.fit(X_train, y_train)
clf.best_estimator_.estimator_

さらに表示するには、次を使用します。

print(selector.get_params())
于 2016-03-15T19:08:26.770 に答える