SVC分类器fit方法报错ValueError: Unknown label type: 'continuous'怎么办
问题根因
SVC是sklearn提供的分类模型,要求输入的标签y必须是离散的分类值(二分类/多分类均可),你当前传入的y是连续数值类型,不符合分类模型的输入要求,因此触发Unknown label type: 'continuous'报错。
排查步骤
先执行以下两行代码确认标签情况:
# 查看y的数据类型 print(y.dtype) # 查看y的所有唯一取值 print(y.unique())
对应解决方案
场景1:你需要做分类任务
说明你的标签未做离散化处理,需要将连续的y值映射为离散分类标签:
- 二分类场景:设定阈值将y转为0/1标签,示例代码:
# 例如以y的中位数为阈值,大于阈值为1,小于为0 threshold = y.median() y = (y > threshold).astype(int) - 多分类场景:将连续y分桶为多个离散类别,示例代码:
import pandas as pd # 例如将y平均分为3个分类区间,对应标签0、1、2 y = pd.cut(y, bins=3, labels=[0,1,2]).astype(int)
处理完标签后再重新拆分数据集、训练SVC即可。
场景2:你需要做连续值预测的回归任务
不要使用用于分类的SVC,替换为支持向量回归模型SVR即可,训练代码修改为:
from sklearn.svm import SVR regressor = SVR(kernel = 'linear', random_state = 0) regressor.fit(X_train, y_train)
内容的提问来源于stack exchange,提问作者Saif_adib
相关产品推荐
相关产品推荐

