Keras Sklearn Tuner 模块“sklearn”没有属性“管道”

Posted

技术标签:

【中文标题】Keras Sklearn Tuner 模块“sklearn”没有属性“管道”【英文标题】:Keras Sklearn Tuner module 'sklearn' has no attribute 'pipeline' 【发布时间】:2021-11-07 03:30:35 【问题描述】:
from sklearn import ensemble
from sklearn import linear_model

def build_model(hp):
    model_type = hp.Choice('model_type', ['random_forest', 'ridge'])
    if model_type == 'random_forest':
        with hp.conditional_scope('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))
    elif model_type == 'ridge':
        with hp.conditional_scope('model_type', 'ridge'):
            model = linear_model.RidgeClassifier(
                alpha=hp.Float('alpha', 1e-3, 1, sampling='log'))
    else:
        raise ValueError('Unrecognized model_type')
    return model

tuner = kt.tuners.Sklearn(
        oracle=kt.oracles.BayesianOptimization(
            objective=kt.Objective('score', 'max'),
            max_trials=10),
        hypermodel=build_model,
        directory=".")

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 上的示例中执行此代码 https://keras.io/api/keras_tuner/tuners/sklearn/

我收到如下所示的错误。应该怎么解决?

c:\users\99ans\appdata\local\programs\python\python39\lib\site-packages\keras_tuner\tuners\sklearn_tuner.py in run_trial(self, trial, X, y, sample_weight, groups)
    161                 sample_weight[train_indices] if sample_weight is not None else None
    162             )
--> 163 
    164             model = self.hypermodel.build(trial.hyperparameters)
    165             #if isinstance(model, Pipeline):

AttributeError: module 'sklearn' has no attribute 'pipeline'

【问题讨论】:

【参考方案1】:

添加 import sklearn.pipeline 会暂时解决这个问题。

这是一个最近的问题,将在下一个版本中修复。

你可以在这里找到更多关于它的信息https://github.com/keras-team/keras-tuner/issues/600

【讨论】:

以上是关于Keras Sklearn Tuner 模块“sklearn”没有属性“管道”的主要内容,如果未能解决你的问题,请参考以下文章

keras开发成sklearn接口

TensorBoard 的 Keras Tuner Trials 目录的命名

将 TensorBoard 与 Keras Tuner 一起使用

使用 Keras Tuner RandomSearch 错误进行超参数调优

使用 Keras Tuner 的未知度量 val_accuracy

将参数发送到 Keras Tuner 模型构建器函数