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

如何用Python实现预测?MLPClassifier报Unknown label type错误求解

解决ValueError: Unknown label type问题

这个错误的根源很明确:你使用的MLPClassifier是分类模型,它要求输入的标签是离散的类别标识(比如整数0/1/2,或者字符串类别名),但你的标签数据是连续的浮点数(比如1.0,1.1,1.2这类),scikit-learn无法将连续值识别为分类任务的标签,因此抛出了这个异常。

根据你的实际任务需求,有两种针对性的解决方案:

方案1:你确实需要做分类任务

如果这些浮点数代表的是不同的独立类别(比如1.0对应类别A,1.1对应类别B,以此类推),你需要把标签转换成模型能识别的离散类别格式,推荐用LabelEncoder来统一编码:

import numpy as np
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import LabelEncoder  # 新增导入

data = np.loadtxt('C:/Users/hedeg/Desktop/RulaSoftEdgePrediction.txt')
X_train = np.array(data[0:3500,0:4])
y_train = np.array(data[0:3500,4])
X_test = np.array(data[3500::,0:4])
y_test = np.array(data[3500::,4])

# 对标签进行编码,将唯一浮点数转为连续整数类别
le = LabelEncoder()
y_train = le.fit_transform(y_train)
y_test = le.transform(y_test)

clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X_train, y_train)

LabelEncoder会自动把所有唯一的浮点数标签转换成从0开始的连续整数,完美适配分类模型的要求。

方案2:你实际需要做回归任务

如果你的目标是预测连续的数值(比如输出1.0、1.1这类连续结果),那你用错了模型——应该用专门处理回归任务的MLPRegressor,而不是分类用的MLPClassifier:

import numpy as np
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor  # 替换导入为回归模型

data = np.loadtxt('C:/Users/hedeg/Desktop/RulaSoftEdgePrediction.txt')
X_train = np.array(data[0:3500,0:4])
y_train = np.array(data[0:3500,4])
X_test = np.array(data[3500::,0:4])
y_test = np.array(data[3500::,4])

# 使用MLPRegressor替换MLPClassifier,适配连续值预测
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X_train, y_train)

这样模型就会以预测连续数值为目标,不会再纠结标签类型的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:32:52