Sklearn Tuner

[來源]

SklearnTuner 類別

keras_tuner.SklearnTuner(
    oracle, hypermodel, scoring=None, metrics=None, cv=None, **kwargs
)

用於 Scikit-learn 模型的調校器。

為 Scikit-learn 模型執行交叉驗證的超參數搜尋。

範例

import keras_tuner
from sklearn import ensemble
from sklearn import datasets
from sklearn import linear_model
from sklearn import metrics
from sklearn import model_selection

def build_model(hp):
  model_type = hp.Choice('model_type', ['random_forest', 'ridge'])
  if model_type == 'random_forest':
    model = ensemble.RandomForestClassifier(
        n_estimators=hp.Int('n_estimators', 10, 50, step=10),
        max_depth=hp.Int('max_depth', 3, 10))
  else:
    model = linear_model.RidgeClassifier(
        alpha=hp.Float('alpha', 1e-3, 1, sampling='log'))
  return model

tuner = keras_tuner.tuners.SklearnTuner(
    oracle=keras_tuner.oracles.BayesianOptimizationOracle(
        objective=keras_tuner.Objective('score', 'max'),
        max_trials=10),
    hypermodel=build_model,
    scoring=metrics.make_scorer(metrics.accuracy_score),
    cv=model_selection.StratifiedKFold(5),
    directory='.',
    project_name='my_project')

X, y = datasets.load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = model_selection.train_test_split(
    X, y, test_size=0.2)

tuner.search(X_train, y_train)

best_model = tuner.get_best_models(num_models=1)[0]

參數

  • oracle:一個 keras_tuner.Oracle 實例。請注意,對於此 TunerOracleobjective 應始終設定為 Objective('score', direction='max')。此外,不應將利用特定於神經網路訓練的 Oracle (例如 Hyperband) 與此 Tuner 一起使用。
  • hypermodel:一個 HyperModel 實例 (或接受超參數並返回 Model 實例的可呼叫物件)。
  • scoring:一個 sklearn scoring 函數。有關更多資訊,請參閱 sklearn.metrics.make_scorer。如果未提供,將透過 model.score 使用模型的預設評分。請注意,如果您正在搜尋不同的模型族,這些模型的預設評分通常會有所不同。在這種情況下,您應該在此處提供 scoring,以確保您的模型以相同的指標進行評分。
  • metrics:在搜尋期間要監控的其他 sklearn.metrics 函數。請注意,這些指標不會影響搜尋過程。
  • cv:一個 sklearn.model_selection 分割器類別。用於決定如何將樣本分成組別以進行交叉驗證。
  • **kwargs:與所有 Tuner 子類別相關的關鍵字參數。請參閱 Tuner 的文件字串。