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

如何用Pandas Python实现足球赛事多标签分类并解决RFE报错问题?

报错原因

  1. 你对y执行了values.ravel()操作:原y是形状为(4560, 2)的二维数组,拉平后变成了长度为9120的一维数组,和X的4560个样本数量无法匹配,直接触发了样本数不一致的报错。
  2. RFE参数使用错误:RFE(logReg, 20)中第二个入参是要保留的特征总数,不是你以为的测试百分比。你当前X总共只有2个特征,设置为20本身就无法生效。
  3. 原生RFE不直接支持多标签输入,需要对基础分类器做包装才能适配多标签场景。

修复方案

第一步:依赖导入

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
from sklearn.multioutput import MultiOutputClassifier

第二步:修正特征选择代码

# 用MultiOutputClassifier包装逻辑回归,适配多标签输出
logReg = MultiOutputClassifier(LogisticRegression(solver='lbfgs', max_iter=1000))
# 修正RFE参数,当前X只有2个特征,保留所有2个特征即可,可根据你后续新增的特征数量调整
rfe = RFE(logReg, n_features_to_select=2)
# 直接传入原始y即可,不要用ravel拉平
rfe = rfe.fit(X, y)
# 输出特征重要性结果
print(rfe.support_)

第三步:输出目标概率

训练完成后调用predict_proba方法即可得到你需要的两类概率:

# 训练模型
model = logReg.fit(X, y)
# 对单条测试样本做预测
test_sample = X.iloc[0:1] # 替换为你的待预测样本
proba_list = model.predict_proba(test_sample)
# 提取对应类别的概率
home_win_p = round(proba_list[0][0][1] * 100)
draw_p = round(proba_list[1][0][1] * 100)
# 按要求输出
print(f"Home Team Win {home_win_p}%")
print(f"Draw {draw_p}%")

优化建议

你当前的标签构造逻辑存在缺陷:主队获胜、平局、客队获胜是三个互斥的结果,多标签分类可能会出现同时预测主队获胜和平局的不合理结果。更合理的方案是直接改为三分类任务,标签对应三个结果:主队赢、客队赢、平局,训练完成后直接提取对应类别的概率即可,逻辑更严谨,精度也会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:06:07