scikit-learn - .transform() 在 sklearn StandardScaler 中究竟做了什么?
问题描述
我现在正在学习 StandardScaler。但是,我不明白 .transform 究竟做了什么。在 API 文档中,它只是说“通过居中和缩放执行标准化”有人可以解释一下吗?
解决方案
标准缩放函数具有公式:
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
推荐阅读
- docker - 在另一个容器的本地主机上发布端口
- xcode10.1 - Xcode 10.1 在故事板文件的版本编辑器中突出显示一行(或多行)
- unix - 通过 SOCKS 路由所有控制台流量
- c# - 使用 EF6 更新实体的某些属性而不加载整个实体
- encoding - CloudCDN 是否支持 Brotli 编码的服务?
- swift - 如何在 Swift 存储属性中创建协议及其扩展?
- mysql - Mariadb 加载,但几分钟后崩溃。从“快照”恢复服务器后发生
- jenkins - jenkinsfile 没有将 env 传递给 sh
- gitlab - 如何仅获取 Gitlab API 响应中的特定字段?
- python - Subprocess check_output cutting my output short