预处理数据:sklearn StandardScaler和scipy whiten的区别
Posted
技术标签:
【中文标题】预处理数据:sklearn StandardScaler和scipy whiten的区别【英文标题】:Pre-processing data: difference between sklearn StandardScaler and scipy whiten 【发布时间】:2021-12-18 21:06:06 【问题描述】:我正在尝试对一些数据应用聚类分析并遵循一些教程,并且有两个用于规范化数据的选项,函数 StandardScaler 和函数 whiten。
两者有什么区别?
【问题讨论】:
【参考方案1】:StandardScaler() 通过去除均值并除以标准差来执行 Z 分数归一化。 whiten() 不会删除均值,而只是将实例除以标准差。我个人会选择 StandardScaler(),因为它允许在训练集上使用简单的 fit_transform
,在测试集上使用 transform
,以防止溢出/泄漏。
以下是原理证明:
加载包
import numpy as np
from scipy.cluster.vq import whiten
from sklearn.preprocessing import StandardScaler
初始化一个特征数组
features = np.array([[1.9, 2.3, 1.7],
[1.5, 2.5, 2.2],
[0.8, 0.6, 1.7,]])
例如,计算第一列的均值和第一列的标准差
meancol1 = np.mean(features[:,0])
std_col1 = np.std(features[:,0])
执行白化功能
whit = whiten(features)
在特征上初始化标准缩放器和 fit_transform
scaler = StandardScaler()
std_scaler = scaler.fit_transform(features)
手动计算第一个实例的 z-score
z_score = (features[0,0] - meancol1) / std_col1
为第一个实例手动执行白化功能
w_score = features[0,0]/std_col1
如您所见,手动计算对应于它们各自的函数结果。
【讨论】:
以上是关于预处理数据:sklearn StandardScaler和scipy whiten的区别的主要内容,如果未能解决你的问题,请参考以下文章