预处理数据: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的区别的主要内容,如果未能解决你的问题,请参考以下文章

初识人工智能:机器学习:sklearn数据特征预处理

sklearn 数据预处理

sklearn数据获取与预处理

sklearn工具-数据集变换

sklearn数据预处理-scale

十分钟上手sklearn 安装,获取数据,数据预处理