web-dev-qa-db-ja.com

GridSearchCVとAdaBoostおよびDecisionTreeClassifierの使用

Base_estimatorとしてDecisionTreeClassifier( "DTC")を使用して、AdaBoost Classifier( "ABT")を調整しようとしています。 both ABTとDTCパラメーターを同時に調整したいのですが、これを達成する方法がわかりません-DTCの出力をABTに「パイプ」していないため、パイプラインが機能しないはずです。その考えは、GridSearchCV推定器でABTおよびDTCのハイパーパラメーターを反復することです。

チューニングパラメータを正しく指定するにはどうすればよいですか?

以下を試してみましたが、以下のエラーが発生しました。

[IN]
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.grid_search import GridSearchCV

param_grid = {dtc__criterion : ["gini", "entropy"],
              dtc__splitter :   ["best", "random"],
              abc__n_estimators: [none, 1, 2]
             }


DTC = DecisionTreeClassifier(random_state = 11, max_features = "auto", class_weight = "auto",max_depth = None)

ABC = AdaBoostClassifier(base_estimator = DTC)

# run grid search
grid_search_ABC = GridSearchCV(ABC, param_grid=param_grid, scoring = 'roc_auc')

[OUT]
ValueError: Invalid parameter dtc for estimator AdaBoostClassifier(algorithm='SAMME.R',
      base_estimator=DecisionTreeClassifier(class_weight='auto', criterion='gini', max_depth=None,
        max_features='auto', max_leaf_nodes=None, min_samples_leaf=1,
        min_samples_split=2, min_weight_fraction_leaf=0.0,
        random_state=11, splitter='best'),
      learning_rate=1.0, n_estimators=50, random_state=11)
25
GPB

投稿したコードにはいくつかの間違いがあります。

  1. param_grid辞書のキーは文字列である必要があります。 NameErrorを取得する必要があります。
  2. キー「abc__n_estimators」は「n_estimators」である必要があります。これはおそらくパイプライン構文と混合しているでしょう。ここでは、Pythonという文字列 "abc"がAdaBoostClassifierを表していることを伝えません。
  3. Nonenoneではなく)は、n_estimatorsの有効な値ではありません。デフォルト値(おそらくあなたが意図したもの)は50です。

これらの修正を含むコードは次のとおりです。 Tree推定器のパラメーターを設定するには、ネストされたパラメーターにアクセスできる「__」構文を使用できます。

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.grid_search import GridSearchCV

param_grid = {"base_estimator__criterion" : ["gini", "entropy"],
              "base_estimator__splitter" :   ["best", "random"],
              "n_estimators": [1, 2]
             }


DTC = DecisionTreeClassifier(random_state = 11, max_features = "auto", class_weight = "auto",max_depth = None)

ABC = AdaBoostClassifier(base_estimator = DTC)

# run grid search
grid_search_ABC = GridSearchCV(ABC, param_grid=param_grid, scoring = 'roc_auc')

また、1つまたは2つの推定量は、AdaBoostにはあまり意味がありません。しかし、これはあなたが実行している実際のコードではないと推測しています。

お役に立てれば。

25
ldirer