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

使用SVC、MultinomialNB分类时出现Unknown label type: 'continuous'错误如何解决

错误根源

你选用的MultinomialNB、SVC都属于分类模型,仅支持输入离散的类别标签,你当前的ytrain是连续浮点数值,属于回归任务的标签类型,因此触发类型不匹配报错。你之前编写的标签编码代码未生效,是因为你没有将编码后的encoded变量传入模型训练,仍然使用了原始的连续值标签ytrain。

解决方案

根据你的实际业务需求二选一即可:

方案1:确认做分类任务,调整标签处理逻辑

分类任务要求标签是固定的离散类别,你需要先把连续数值标签转换为离散类别:

  • 推荐先根据业务逻辑对连续值做分箱处理,再编码为整数标签,示例代码如下:
import pandas as pd
from sklearn import preprocessing
from sklearn.naive_bayes import MultinomialNB

# 步骤1:将连续标签分箱为离散类别,可根据业务调整分箱数量、边界
ytrain_category = pd.cut(ytrain, bins=3, labels=['低', '中', '高'])
# 步骤2:将类别标签编码为整数
lab_enc = preprocessing.LabelEncoder()
encoded_ytrain = lab_enc.fit_transform(ytrain_category)

# 步骤3:训练模型时必须传入编码后的标签,不要传原始ytrain
model = MultinomialNB()
model.fit(Xtrain, encoded_ytrain)
  • 如果你确实需要将每一个唯一的连续值作为单独类别,可以直接对原始ytrain做LabelEncoder编码,注意传入模型的必须是编码后的结果。

处理完成后可以运行以下代码验证标签类型,输出为binary或multiclass即为符合要求:

from sklearn import utils
print(utils.multiclass.type_of_target(encoded_ytrain))

方案2:确认做连续值预测任务,替换为回归模型

如果你的业务就是要预测连续数值,属于回归任务,直接替换对应回归模型即可,不需要修改标签:

from sklearn.svm import SVR
from sklearn.linear_model import BayesianRidge

# SVC对应替换为SVR(支持向量回归)
svr_model = SVR()
svr_model.fit(Xtrain, ytrain)

# MultinomialNB对应替换为贝叶斯回归类模型
bayes_model = BayesianRidge()
bayes_model.fit(Xtrain, ytrain)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:03