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

使用SKLearn构建逻辑回归时,如何正确准备X特征数据?

正确使用Scikit-learn构建逻辑回归的X数据准备方法

问题核心拆解

  1. 输入格式要求:Scikit-learn所有监督模型要求特征矩阵X必须是二维数组(形状为(样本数, 特征数)),你最初遇到的ValueError就是因为传入了一维的价格数据,使用x.reshape(-1,1)将其转换为(n_samples, 1)的二维数组是完全正确的格式处理方式。

  2. 未缩放导致系数异常的原因:
    LogisticRegression默认启用L2正则化(penalty='l2'),当特征的量纲过大(比如每平米价格是数百到数千欧元),正则化会对大尺度特征的系数施加极强的惩罚,直接导致系数被压缩到接近0,甚至出现与理论预期相反的符号。

  3. 测试集缩放的致命错误:
    你的代码中对测试集使用了scaler.fit_transform(X_test),这是错误的——测试集必须复用训练集拟合的缩放规则(即只调用scaler.transform(X_test)),否则会重新计算测试集的均值和标准差,引入数据泄露,破坏模型的泛化能力。


正确的X数据准备步骤

  1. 提取特征与目标变量,确保X为二维数组
  2. 先划分训练集/测试集,再进行特征缩放(避免数据泄露)
  3. 仅用训练集拟合缩放器,用同一缩放器转换训练集和测试集
  4. 基于缩放后的训练集训练模型,用缩放后的测试集评估

修正后的完整代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix

# 1. 读取数据并提取变量
df = pd.read_csv('Data_file.csv', sep=',')
y = df['AC_Binary']
# 直接用二维数组格式提取特征,避免后续reshape
X = df[['Price_gross_m2']].values

# 2. 划分训练集与测试集(必须在缩放前执行)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=15)

# 3. 特征缩放:仅在训练集拟合,同时转换训练/测试集
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# 测试集仅用transform,复用训练集的均值和标准差
X_test_scaled = scaler.transform(X_test)

# 4. 训练与评估逻辑回归模型
logistic_model = LogisticRegression()
logistic_model.fit(X_train_scaled, y_train)
y_pred = logistic_model.predict(X_test_scaled)

# 输出评估结果
accuracy = accuracy_score(y_test, y_pred) * 100
confusion_mat = confusion_matrix(y_test, y_pred)
coefficients = logistic_model.coef_
intercept = logistic_model.intercept_

print('预测结果:', y_pred)
print('准确率:', accuracy)
print('混淆矩阵:', confusion_mat)
print('回归系数:', coefficients)
print('截距:', intercept)

关键注意事项

  • 特征格式:即使是单特征,也必须保证X是二维数组,除了reshape(-1,1),还可以直接用df[['列名']].values(双层方括号返回DataFrame,转成数组就是二维)
  • 缩放时机:必须先划分数据集再缩放,绝对不能在全量数据上拟合缩放器后再划分
  • 测试集处理:测试集只能用训练集拟合的缩放器进行转换,禁止重新拟合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:10:13