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

Scikit-Learn:使用SGDClassifier拟合乳腺癌数据集时为何报ValueError: Unknown label type?

错误原因及解决办法

核心问题

你错误地将数据集的特征列当作了分类任务的标签y,导致SGDClassifier无法识别标签类型。

具体解释

  • load_breast_cancer数据集的分类标签存储在breast_cancer["target"]中,是离散的二分类值(0代表恶性,1代表良性),符合SGDClassifier(分类器)对标签的要求。
  • 你代码中y = breast_df["worst fractal dimension"]选取的是数据集里的一个连续数值型特征,不是分类标签。SGDClassifier默认用于分类任务,无法处理连续值作为标签的情况,因此抛出ValueError: Unknown label type。

修正后的分类任务代码

import pandas as pd
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import train_test_split

breast_cancer = load_breast_cancer(as_frame=True)
# 特征矩阵X使用所有特征列
X = breast_cancer.data
# 标签y使用数据集自带的分类标签
y = breast_cancer.target

np.random.seed(42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = SGDClassifier()
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

额外说明

如果你原本是想对"worst fractal dimension"这个连续值做预测(回归任务),那么应该使用SGDRegressor而不是SGDClassifier,代码示例如下:

import pandas as pd
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import SGDRegressor
from sklearn.model_selection import train_test_split

breast_cancer = load_breast_cancer(as_frame=True)
breast_df = breast_cancer.data
X = breast_df.drop("worst fractal dimension", axis=1)
y = breast_df["worst fractal dimension"]

np.random.seed(42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = SGDRegressor()
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:02:18