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