python中StandardScaler().fit_transform() 函数
·
标准差计算公式
总体标准差(Population Standard Deviation)
当数据代表整个总体时:

样本标准差(Sample Standard Deviation)
当数据只是样本时(StandardScaler使用这个):

手动计算示例
数据:[1, 2, 3, 4, 5]
步骤1:计算均值
xˉ=1+2+3+4+55=155=3xˉ=51+2+3+4+5=515=3
步骤2:计算每个数据与均值的差
-
1 - 3 = -2
-
2 - 3 = -1
-
3 - 3 = 0
-
4 - 3 = 1
-
5 - 3 = 2
步骤3:计算差的平方
-
(-2)² = 4
-
(-1)² = 1
-
0² = 0
-
1² = 1
-
2² = 4
步骤4:求和
4+1+0+1+4=104+1+0+1+4=10
步骤5:除以 (n-1)
105−1=104=2.55−110=410=2.5
步骤6:开平方根
s=2.5≈1.581s=2.5≈1.581
python示例
import numpy as np
from sklearn.preprocessing import StandardScaler
data = np.array([1, 2, 3, 4, 5])
# 方法1:numpy计算(默认使用样本标准差)
std_np = np.std(data, ddof=1) # ddof=1 表示除以 n-1
print(f"NumPy样本标准差: {std_np}") # 输出: 1.581
# 方法2:手动计算
mean = np.mean(data)
variance = sum((x - mean) ** 2 for x in data) / (len(data) - 1)
std_manual = np.sqrt(variance)
print(f"手动计算标准差: {std_manual}") # 输出: 1.581
# 方法3:StandardScaler
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data.reshape(-1, 1))
print(f"StandardScaler标准差: {scaler.scale_[0]}") # 输出: 1.581
StandardScaler()
StandardScaler().fit_transform() 通过减去均值,除以标准差,把数据变换到均值为0、方差为1的范围内。
import sklearn.preprocessing
from sklearn.preprocessing import StandardScaler
std = StandardScaler()
data = std.fit_transform([[1., -1., 3.], [2., 4., 2.], [4., 6., -1.]])
print(data)
更多推荐
所有评论(0)