Sklearn实现逻辑回归报Unknown label type 'continuous'错误求解
报错原因
你出现该报错的核心原因是工具链误用,触发了标签类型转换:
TransformedTargetRegressor是为回归任务设计的工具类,作用是对回归任务的连续目标变量做预变换,而逻辑回归是分类算法,本身不应该套入该类使用。- 你为Y指定了
StandardScaler变换,哪怕原始Y是0/1的二值整数,在模型拟合阶段,TransformedTargetRegressor会自动调用yscaler对输入的Y做标准化,输出为均值为0、方差为1的连续浮点数值,逻辑回归作为分类模型,无法识别连续型的分类标签,因此抛出错误。
修正方案
分类任务不需要对标签做缩放,也无需使用TransformedTargetRegressor,直接用Pipeline拟合即可,修正后代码如下:
X = X.astype(int) Y = Y.astype(int) X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=.10, random_state = 42) xscaler = StandardScaler() pipe = Pipeline([('scaler', xscaler), ('logit', LogisticRegression())]) pipe.fit(X_train,y_train) # 后续预测直接调用 pipe.predict(X_test) 即可
补充说明:TransformedTargetRegressor仅适用于线性回归、随机森林回归等预测连续值的回归任务,用于对目标变量做标准化、对数变换等操作,分类任务无需对标签做此类变换。
内容的提问来源于stack exchange,提问作者krpytix
相关产品推荐
相关产品推荐

