预处理数据:sklearn StandardScaler 和 scipy whiten 的区别
Pre-processing data: difference between sklearn StandardScaler and scipy whiten
我正在尝试对某些数据应用聚类分析并按照一些教程进行操作,有两个选项可用于规范化数据,函数 StandardScaler 和函数 whiten。
两者有什么区别?
StandardScaler() 通过去除均值并除以标准差来执行 Z 分数归一化。 whiten() 不会删除均值,而只是将实例除以标准差。我个人会选择 StandardScaler(),因为它允许在训练集上使用简单的 fit_transform
并在测试集上使用 transform
以防止 spillage/leakage.
下面是原理证明:
加载包
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
如您所见,手动计算对应各自的函数结果。
我正在尝试对某些数据应用聚类分析并按照一些教程进行操作,有两个选项可用于规范化数据,函数 StandardScaler 和函数 whiten。
两者有什么区别?
StandardScaler() 通过去除均值并除以标准差来执行 Z 分数归一化。 whiten() 不会删除均值,而只是将实例除以标准差。我个人会选择 StandardScaler(),因为它允许在训练集上使用简单的 fit_transform
并在测试集上使用 transform
以防止 spillage/leakage.
下面是原理证明:
加载包
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
如您所见,手动计算对应各自的函数结果。