TensorFlow Keras回归报错:AttributeError: 'super'对象无'sklearn_tags'属性
错误原因分析
这个错误主要由两个问题导致:
- 任务类型不匹配:你构建的是二分类模型(输出用sigmoid激活、损失函数为BinaryCrossentropy),但误用了回归任务专用的
KerasRegressor,这会引发后续兼容性问题。 - 版本兼容问题:Scikeras与Scikit-learn版本不匹配,
sklearn_tags是Scikit-learn 1.1+版本引入的属性,若你使用的Scikeras版本较高但Scikit-learn版本过低,就会出现该属性找不到的错误。
修复步骤
- 替换任务包装器:将
KerasRegressor改为KerasClassifier,适配二分类任务:from tensorflow import keras from scikeras.wrappers import KerasClassifier # 替换为分类专用包装器 def build_model(): model = keras.Sequential([ keras.layers.Dense(32, activation='tanh', input_shape=[len(X.keys())]), keras.layers.Dense(16, activation='tanh'), keras.layers.Dense(1, activation="sigmoid") ]) optimizer = keras.optimizers.RMSprop() model.compile(loss=keras.losses.BinaryCrossentropy(), optimizer=optimizer, metrics=[keras.metrics.BinaryAccuracy()]) return model kr = KerasClassifier(build_model, epochs=100, batch_size=10000, verbose=1) kr.fit(X_train, y_train, validation_split=0.2) - 调整版本兼容:
- 若你使用的Scikit-learn版本低于1.1,安装兼容的Scikeras版本:
pip install scikeras==0.9.0 - 若要使用最新版Scikeras,升级Scikit-learn到1.1及以上:
pip install --upgrade scikit-learn
- 若你使用的Scikit-learn版本低于1.1,安装兼容的Scikeras版本:
内容的提问来源于stack exchange,提问作者Arnauld
相关产品推荐
相关产品推荐

