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
实例(或一个接受超参数并返回模型实例的可调用对象)。scoring
函数。有关更多信息,请参阅 sklearn.metrics.make_scorer
。如果未提供,则将通过 model.score
使用模型的默认评分。请注意,如果您在不同的模型族中搜索,这些模型的默认评分通常会有所不同。在这种情况下,您应该在此处提供 scoring
,以确保您的模型使用相同的指标进行评分。sklearn.metrics
函数。请注意,这些指标不会影响搜索过程。sklearn.model_selection
分割器类。用于确定如何将样本拆分为用于交叉验证的组。Tuner
子类相关的关键字参数。请参阅 Tuner
的文档字符串。