You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SciKeras与Scikit-learn时出现AttributeError: 'super' object has no attribute '__sklearn_tags__'错误的解决方法咨询

SciKeras与Scikit-learn时出现AttributeError: 'super' object has no attribute 'sklearn_tags'错误的解决方法咨询

看起来你在结合SciKeras和Scikit-learn做Keras模型的交叉验证时碰到了版本兼容的坑,这个错误大概率是因为库之间的接口适配出了问题。先理清楚你的场景:

你做完数据预处理后运行了这段代码:

import tensorflow
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense     
from scikeras.wrappers import KerasClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold

def build_classifier():
    classifier = Sequential()
    classifier.add(Dense(units=6,
                         activation="relu",
                         kernel_initializer="uniform",
                         input_dim=11
                         )
                   )
    
    classifier.add(Dense(units=6,
                         activation="relu",
                         kernel_initializer="uniform"
                         )
                   )

    
    classifier.add(Dense(units=1,
                         activation="sigmoid",
                         kernel_initializer="uniform"
                         )
                   )

    
    classifier.compile(optimizer="adam",
                       loss="binary_crossentropy",
                       metrics=["accuracy"])

    return classifier

classifier = KerasClassifier(model=build_classifier, batch_size=10, epochs=100, verbose=0)
precisions = cross_val_score(estimator=classifier, X=X_train, y=y_train, cv=10, n_jobs=1)

然后遇到了这个错误:

AttributeError: 'super' object has no attribute '__sklearn_tags__'

你的环境版本是:

python==3.9.13 
scikit-learn==1.6.1 
scikeras==0.13.0 
keras==3.8.0 
tensorflow==2.18.0

给你几个可行的解决思路:

  • 优先升级SciKeras版本:你用的scikeras==0.13.0发布时间较早,对Scikit-learn 1.6.x引入的__sklearn_tags__接口支持不足。直接升级到最新稳定版应该能解决适配问题:

    pip install --upgrade scikeras
    

    要是需要指定版本,试试scikeras==0.14.0及以上的版本,这些版本专门适配了Scikit-learn的新接口。

  • 降级Scikit-learn到兼容版本:如果升级SciKeras有其他依赖冲突,可以把Scikit-learn降到1.5.x系列,这个版本和scikeras==0.13.0的兼容性更稳定:

    pip install scikit-learn==1.5.2
    
  • 小细节检查:另外可以试试调整KerasClassifier的参数传递方式,把模型相关的参数加上model__前缀(不过这更多是规范用法,不一定是根本解决办法,但可以试试):

    classifier = KerasClassifier(model=build_classifier, model__batch_size=10, model__epochs=100, verbose=0)
    

先试试前两个版本调整的方法,这个错误基本都是版本不匹配导致的接口适配问题,调整后应该能解决。

备注:内容来源于stack exchange,提问作者Romain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:14:31