要导入StandardScaler类进行数据标准化,请使用以下语句:
要导入StandardScaler
类进行数据标准化,请使用以下语句:
from sklearn.preprocessing import StandardScaler
使用步骤详解
-
创建实例
scaler = StandardScaler()
-
拟合数据(计算均值和标准差)
scaler.fit(X_train)
说明:X_train
是训练集特征矩阵,形状为(n_samples, n_features)
-
转换数据(应用标准化)
X_train_std = scaler.transform(X_train) # 标准化训练集 X_test_std = scaler.transform(X_test) # 用训练集的参数标准化测试集
关键特性
- 标准化公式:
z=x−μσz = \frac{x - \mu}{\sigma}z=σx−μ
其中μ\muμ是均值,σ\sigmaσ是标准差。 - 作用:将数据转换为均值为0、标准差为1的分布,消除量纲影响。
- 注意事项:测试集必须使用训练集计算的μ\muμ和σ\sigmaσ,避免数据泄露。
示例代码
import numpy as np
from sklearn.preprocessing import StandardScaler# 生成示例数据(3个样本,2个特征)
data = np.array([[1.0, 2.0], [3.0, 1.0], [2.0, 3.0]])# 标准化
scaler = StandardScaler()
scaler.fit(data) # 计算均值和标准差
transformed_data = scaler.transform(data) # 应用转换print("原始数据:\n", data)
print("标准化后:\n", transformed_data)
print("均值:", scaler.mean_) # 输出: [2.0, 2.0]
print("标准差:", np.sqrt(scaler.var_)) # 输出: [0.82, 0.82] (近似)
常见问题解答
Q: 为什么测试集要使用训练集的参数?
A: 确保生产环境中的数据与训练时采用相同的转换规则,避免模型偏差。
Q: 标准化和归一化(MinMaxScaler)的区别?
A: 标准化保留异常值信息,归一化将数据压缩到[0,1]区间。标准化更适用于服从高斯分布的数据。