Keras 3 API 文档 / KerasTuner / 调试器 / Sklearn 调试器

Sklearn 调试器

[来源]

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