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

StackingClassifier无predict_proba属性求助:堆叠分类器概率预测报错

解决StackingClassifier调用predict_proba报错的问题

问题描述

我正在构建堆叠分类器完成类别预测,需要获取每个样本属于预测类别的概率,但调用predict_proba()方法时反复出现错误:'StackingClassifier' object has no attribute 'pedict_proba'。

代码示例

hgbm = HistGradientBoostingClassifier(l2_regularization=3, learning_rate=0.5, random_state=42, class_weight="balanced")
bbc = BalancedBaggingClassifier(
    estimator = hgbm,
    n_estimators = 10, 
    random_state = 42,
    n_jobs = -1,
)

brf = BalancedRandomForestClassifier(n_estimators = 200, random_state = 42, n_jobs = -1)
CLF =  RidgeClassifier(random_state = 42, alpha = 0.8, max_iter = 200, class_weight = 'balanced')
Class_st = StackingClassifier(estimators=[("BalancedBaggingClassifier", bbc),
                                   ("BalancedRandomForestClassifier", brf)],
                       final_estimator = CLF, stack_method='predict_proba', cv = 5, n_jobs = -1)

Class_st.fit(X_train, y_train)
prob = Class_st.pedict_proba(X_test)

错误信息

'StackingClassifier' object has no attribute 'pedict_proba'

解决方案

1. 修正拼写错误

你在调用方法时把predict_proba误写为pedict_proba(缺少字母r),这是最直接的错误,先修正拼写:

prob = Class_st.predict_proba(X_test)

2. 替换不支持概率输出的最终分类器

你的最终分类器RidgeClassifier本身没有predict_proba方法,即使底层基分类器支持概率输出,堆叠分类器也无法生成概率结果。解决方式有两种:

方案A:替换为支持predict_proba的模型

比如使用LogisticRegression(适配你需求的参数):

from sklearn.linear_model import LogisticRegression

# 替换RidgeClassifier为LogisticRegression
CLF = LogisticRegression(random_state=42, C=1/0.8, max_iter=200, class_weight='balanced')
Class_st = StackingClassifier(estimators=[("BalancedBaggingClassifier", bbc),
                                   ("BalancedRandomForestClassifier", brf)],
                       final_estimator = CLF, stack_method='predict_proba', cv = 5, n_jobs = -1)

Class_st.fit(X_train, y_train)
prob = Class_st.predict_proba(X_test)
方案B:对RidgeClassifier进行概率校准

如果必须使用RidgeClassifier,可以用CalibratedClassifierCV对其进行概率校准,使其支持predict_proba:

from sklearn.calibration import CalibratedClassifierCV

# 校准RidgeClassifier以支持概率输出
calibrated_clf = CalibratedClassifierCV(
    RidgeClassifier(random_state=42, alpha=0.8, max_iter=200, class_weight='balanced'),
    cv=5
)
Class_st = StackingClassifier(estimators=[("BalancedBaggingClassifier", bbc),
                                   ("BalancedRandomForestClassifier", brf)],
                       final_estimator = calibrated_clf, stack_method='predict_proba', cv = 5, n_jobs = -1)

Class_st.fit(X_train, y_train)
prob = Class_st.predict_proba(X_test)

内容的提问来源于stack exchange,提问作者Elena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:22:31