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

Python使用sklearn做数据标准化时报错sc_train未定义如何处理

变量定义位置与代码修正说明
  • cols 变量需要在执行标准化操作前定义,作用是存储你筛选出的数值类型列的列名,保证后续转DataFrame时列名对应正确
  • sc_train、sc_test 就是你已经计算得到的标准化后训练集、测试集数组,你之前的代码里已经把结果赋值给了standardized_train_data和standardized_test_data,要么直接修改后续代码的变量名匹配已有的变量,要么在标准化代码后给这两个变量赋值即可

另外注意:你当前对测试集使用fit_transform()的写法是错误的,测试集不能重新拟合scaler,应该直接调用训练集拟合好的scaler的transform()方法,否则会出现数据泄露问题,影响模型泛化效果。

修正后的完整代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import preprocessing 

data_train = pd.read_csv("Train_data.csv")
data_test = pd.read_csv("Test_data.csv")

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()

# 在这里定义cols变量,存储数值列名
cols = data_train.select_dtypes(include=['float64','int64']).columns

standardized_train_data = scaler.fit_transform(data_train[cols])
# 测试集只用transform,不要重新fit
standardized_test_data = scaler.transform(data_test[cols])

# 给sc_train、sc_test赋值,或者直接把后面的变量换成standardized_train_data即可
sc_train = standardized_train_data
sc_test = standardized_test_data

# 之后运行这两行就不会报错了
standardized_traindf = pd.DataFrame(sc_train, columns = cols)
standardized_testdf = pd.DataFrame(sc_test, columns = cols)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:00