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

Pandas线性回归:仅对非分类特征使用StandardScaler标准化

仅对指定非分类特征标准化的实现方法

针对你的需求,这里提供两种可靠的实现方式,分别适配不同场景:


方法一:使用ColumnTransformer(推荐,适合规范流程)

这是Scikit-learn官方推荐的多列差异化处理方案,能清晰区分需要标准化的列和保持原样的列,尤其适合后续扩展更多特征处理逻辑的场景。

操作步骤:

  1. 保留DataFrame结构:拆分特征与目标时,不要将数据转为numpy数组,保留DataFrame格式以便通过列名精准指定处理对象。
  2. 定义列转换器:明确仅对bmi列应用标准化,其余列直接原样保留。
  3. 拟合转换数据:用训练集拟合标准化器,再分别转换训练集和测试集(测试集仅做转换,不重新拟合)。

代码示例:

# 修正特征与目标的拆分(保留DataFrame格式)
y = dataset['value']
X = dataset.drop('value', axis=1)

# 拆分训练集与测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)

# 导入所需工具
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler

# 指定需要标准化的列
numeric_cols = ['bmi']

# 构建列转换器:对目标列做标准化,其余列直接传递
preprocessor = ColumnTransformer(
    transformers=[
        ('scaler', StandardScaler(), numeric_cols)
    ],
    remainder='passthrough'  # 未指定的列不做处理,原样保留
)

# 拟合训练集并转换
X_train_scaled = preprocessor.fit_transform(X_train)
# 转换测试集
X_test_scaled = preprocessor.transform(X_test)

方法二:手动处理(适合简单场景,易于理解)

如果已经将特征转为numpy数组,可通过索引定位目标列,单独完成标准化后替换回原数组。

操作步骤:

  1. 定位目标列索引:根据你的数据列顺序,bmi位于第3列(索引为2,从0开始计数)。
  2. 单独提取并拟合标准化器:仅用训练集的bmi数据拟合scaler,避免影响其他列。
  3. 转换并替换:将训练集和测试集的bmi列转换后,替换回原数组对应位置。

代码示例:

# 假设已完成训练集与测试集拆分(X_train、X_test为numpy数组)
from sklearn.preprocessing import StandardScaler

# 定位bmi列的索引(根据你的数据结构,此处为2)
bmi_index = 2

# 提取训练集的bmi列,转为二维数组适配scaler要求
X_train_bmi = X_train[:, bmi_index].reshape(-1, 1)
# 拟合标准化器
scaler = StandardScaler()
scaler.fit(X_train_bmi)

# 转换训练集和测试集的bmi列
X_train_bmi_scaled = scaler.transform(X_train_bmi)
X_test_bmi_scaled = scaler.transform(X_test[:, bmi_index].reshape(-1, 1))

# 替换回原数组
X_train_scaled = X_train.copy()
X_train_scaled[:, bmi_index] = X_train_bmi_scaled.flatten()

X_test_scaled = X_test.copy()
X_test_scaled[:, bmi_index] = X_test_bmi_scaled.flatten()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:40:33