均值移除(标准化)
由于一个样本的不同特征差异较大, 不利于使用现有的机器学习算法进行样本处理.均值移除可以让样本矩阵中的每一列的平均值为0, 标准差为1.
例如有一列数据表示年龄: 17 20 23
mean = (17+20+23)/3 = 20
17 - 20 = -3
20 - 20 = 0
23 - 20 = 3
如何使这组数据的标准差为1呢?
a = -3
b = 0
c = 3
s = std([a, b, c])
[a/s, b/s, c/s]
均值移除相关API:
import sklearn.preprocessing as sp
# array: 一行一样本 一列一特征
# 对array数组执行均值移除, 返回处理后的结果
A = sp.scale(array)
案例:
"""
均值移除
"""
import numpy as np
import sklearn.preprocessing as sp
samples = np.array([
[17., 100., 4000],
[20., 80., 5000],
[23., 70., 5500]])
return_samples = sp.scale(samples)
print(return_samples)
print(np.mean(return_samples, axis=0))
print(np.std(return_samples, axis=0))
[[-1.22474487 1.33630621 -1.33630621]
[ 0. -0.26726124 0.26726124]
[ 1.22474487 -1.06904497 1.06904497]]
[0.00000000e+00 2.96059473e-16 5.18104078e-16]
[1. 1. 1.]