kmeasns中的whiten介绍
whiten: 基于每个特征对一组观察值进行标准化(Normalize)。
在运行k-means之前,通过观测集的标准偏差重新缩放观测集的每个特征维度是有益的(即“白化”观测集-如在“白噪声”中,每个频率具有相同的功率)。将每个特征除以所有观测值的标准偏差,得到单位方差。
from scipy.cluster.vq import whiten
import numpy as np
矩阵方程长什么样子? 代表什么意义?
f: features
o: observation
>>> # f0 f1 f2
>>>
>>> obs = [[ 1., 1., 1.], #o0
>>> ... [ 2., 2., 2.], #o1
>>> ... [ 3., 3., 3.], #o2
>>> ... [ 4., 4., 4.]] #o3
features = np.array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
whiten(features)
array([[1.22474487, 1.22474487, 1.22474487],
[2.44948974, 2.44948974, 2.44948974],
[3.67423461, 3.67423461, 3.67423461]])
可以看出来, 针对每个特征做了处理.
features = np.array([[1, 1, 1],
[1, 2, 2],
[1, 3, 3]])
whiten(features)
[envs]\pytorch_env\lib\site-packages\scipy\cluster\vq.py:136: RuntimeWarning: Some columns have standard deviation zero. The values of these columns will not change.
warnings.warn("Some columns have standard deviation zero. "
array([[1. , 1.22474487, 1.22474487],
[1. , 2.44948974, 2.44948974],
[1. , 3.67423461, 3.67423461]])
最后一个示例
features = np.array([[1, 2, 0],
[1, 2, 0],
[1, 3, 3]])
whiten(features)
array([[1. , 4.24264069, 0. ],
[1. , 4.24264069, 0. ],
[1. , 6.36396103, 2.12132034]])