要导入StandardScaler类进行数据标准化,请使用以下语句:

要导入StandardScaler类进行数据标准化,请使用以下语句:

python 复制代码
from sklearn.preprocessing import StandardScaler

使用步骤详解

  1. 创建实例
    scaler = StandardScaler()

  2. 拟合数据 (计算均值和标准差)
    scaler.fit(X_train)
    说明:X_train是训练集特征矩阵,形状为(n_samples, n_features)

  3. 转换数据(应用标准化)

    python 复制代码
    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σ,避免数据泄露。

示例代码

python 复制代码
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]区间。标准化更适用于服从高斯分布的数据。