对矩阵进行归一化处理

1.  对样本特征进行归一化处理,减少某一数值太大的特征对其他较小特征的影响

将特征值的取值范围转化为0到1区间内。

import numpy as np
# 公式:newValue = (oldValue-min)/(max)
group=np.array([ [1, 7,  3],
                 [1, 3,  1],
                 [0, 5,  8],
                 [2, 7,  3]])
minVals = group.min(0)  # 为0时:求每列的最小值[0 3 1]   .shape=(3,)
maxVals = group.max(0)  # 为0时:求每列的最大值[2 7 8]   .shape=(3,)
ranges = maxVals - minVals

m = group.shape[0]
normDataSet = np.zeros(np.shape(group))       #  np.shape(group) 返回一个和group一样大小的数组,但元素都为0
diffnormData =group - np.tile(minVals,(m,1))  #  (oldValue-min)  减去最小值
normDataSet1 =diffnormData / np.tile(ranges,(m,1))

print(minVals)          #  打印最小值 [0 3 1]
print(maxVals)         #   打印最大值 [2 7 8]
print(normDataSet1)    
# 打印归一化后的数值
"""
[[0.5        1.         0.28571429]
 [0.5        0.         0.        ]
 [0.         0.5        1.        ]
 [1.         1.         0.28571429]]
"""


猜你喜欢

转载自blog.csdn.net/weixin_39781462/article/details/80960387