拟合逻辑回归模型时触发Unknown label type: 'continuous'报错
报错原因
- 根因:
scikit-learn中的LogisticRegression属于分类算法,仅支持传入离散型的分类标签作为拟合目标,你传入的Price_train是连续数值类型,因此抛出ValueError: Unknown label type: 'continuous'异常。 - 代码同时存在多处顺序/逻辑错误,会导致后续即使解决标签类型问题也无法正常运行:
- 变量定义顺序完全颠倒:先执行
train_test_split拆分Mileage、Price变量,之后才调用load_iris()覆盖Mileage、price变量,拆分得到的训练测试集和鸢尾花数据集无任何关联。 - 未初始化分类器实例:代码直接调用
classifier.fit(),但从未实例化LogisticRegression类创建classifier对象。 - 测试集标准化逻辑错误:测试集标准化需要复用训练集拟合得到的均值、方差参数,直接对测试集执行
fit_transform会造成数据分布偏移,导致模型效果失真。
- 变量定义顺序完全颠倒:先执行
修改方案
根据你的任务目标二选一调整即可:
- 如果你要做鸢尾花分类任务:调整代码执行顺序,修正逻辑错误,参考完整可运行代码如下:
import numpy as np import pandas as pd from sklearn.impute import SimpleImputer from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression # 第一步:加载特征和标签 X, y = load_iris(return_X_y=True) # 第二步:拆分训练、测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0) # 第三步:特征标准化 sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # 第四步:初始化分类器并拟合 classifier = LogisticRegression() classifier.fit(X_train, y_train)
- 如果你实际要做基于里程数预测价格的连续值预测任务:逻辑回归不适用,需要替换为回归类算法,比如使用
from sklearn.linear_model import LinearRegression导入线性回归模型,此时连续型的价格标签可以正常传入拟合。
报错截图

内容的提问来源于stack exchange,提问作者Arunima Saxena
相关产品推荐
相关产品推荐

