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

多分类Logistic Regression做最短路径预测时one-hot标签报错如何解决

问题解决方法

首先明确报错核心:scikit-learn中的多分类逻辑回归、SVM等分类器,默认要求输入的标签y为一维类别数组,你当前使用的是形状为(50,3)的独热编码二维标签,因此触发格式不匹配报错。另外你原代码中仅传入newy_train[:,0]作为标签,相当于把问题简化为「第0条路径是否为最短路径」的二分类任务,自然无法适配三分类需求。

第一步:转换独热编码标签为一维类别标签

你生成的newy_train每行仅对应一个位置为1,分别对应第0、1、2类(对应三条路径中的最短路径),直接按行取最大值的索引即可完成转换:

# 独热编码转一维类别标签,输出形状为(50,)
y_train_label = newy_train.argmax(axis=1)
# 测试集标签如果也是独热格式,同理转换
y_test_label = newy_test.argmax(axis=1)

第二步:调整多分类模型训练代码

无需修改分类器的初始化参数,直接传入转换后的一维标签即可完成三分类训练:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix

# 初始化多分类逻辑回归
LogReg = LogisticRegression(solver = 'lbfgs', multi_class = 'multinomial')
# 传入训练特征和转换后的一维标签
LogReg.fit(newx_train, y_train_label)
# 预测
ylog_pred = LogReg.predict(newx_test)
# 计算准确率和混淆矩阵
print("模型准确率:", accuracy_score(y_test_label, ylog_pred))
print("混淆矩阵:\n", confusion_matrix(y_test_label, ylog_pred))

其他说明

如果后续要训练SVM多分类模型,标签处理逻辑完全一致,直接使用转换后的一维类别标签即可,无需额外调整标签格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:36:00