首页 > 解决方案 > .transform() 在 sklearn StandardScaler 中究竟做了什么?

问题描述

我现在正在学习 StandardScaler。但是,我不明白 .transform 究竟做了什么。在 API 文档中,它只是说“通过居中和缩放执行标准化”有人可以解释一下吗?

标签: scikit-learn

解决方案


标准缩放函数具有公式:

z = (x - u) / s

这里,

x: Element  
u: Mean  
s: Standard Deviation

此元素转换是按列完成的。因此,当您调用拟合 和 的值时mean进行standard_deviation计算。

例如:

from sklearn.preprocessing import StandardScaler
import numpy as np

x = np.random.randint(50,size = (10,2))
x

输出:

array([[26,  9],
       [29, 39],
       [23, 26],
       [29, 22],
       [28, 41],
       [11,  6],
       [42, 40],
       [ 1, 25],
       [ 0, 39],
       [44, 45]])

现在,安装标准缩放器

scale = StandardScaler()
scale.fit(x)

StandardScaler您可以使用对象的内置方法查看平均值和标准差

# Mean
scale.mean_   # array([23.3, 29.2])

# Standard Deviation
scale.scale_  # array([14.36697602, 13.12859475])

您可以使用 transform 方法转换这些值。

scale.transform(x)

输出:

array([[ 0.18793099, -1.53862621],
       [ 0.3967432 ,  0.74646222],
       [-0.02088122, -0.24374277],
       [ 0.3967432 , -0.54842122],
       [ 0.32713913,  0.89880145],
       [-0.85613006, -1.76713506],
       [ 1.3015961 ,  0.82263184],
       [-1.55217075, -0.31991238],
       [-1.62177482,  0.74646222],
       [ 1.44080424,  1.20347991]])

第一个元素的计算:

z = (26 - 23.3) /  14.36697602
z = 0.18793099

推荐阅读