在处理不同取值范围的特征值时,通常会对数据进行归一化处理,将取值范围处理为0~1或者-1~1之间。
归一化公式为:
newValue = (oldValue-min)/(max-min)
代码为:
from numpy import *
def autoNorm(dataSet):
minVals = dataSet.min(0) #0表示从列中选取最小值
maxVals = dataSet.max(0) #选取最大值
ranges = maxVals-minVals
normDataSet = zeros(shape(dataSet)) #创建一个与dataSet大小相同的零矩阵
m = dataSet.shape[0] #取dataSet得行数
normDataSet = dataSet - tile(minVals, (m, 1)) #将minVals复制m行 与dataSet数据集相减
#归一化相除
normDataSet = normDataSet/tile(ranges, (m, 1)) #将最大值-最小值的值复制m行 与normDataSet相除,即归一化
return normDataSet, ranges, minVals #normDataSet为归一化特征值,ranges为最大值-最小值
normDataSet, ranges, minVals = autoNorm(dataSet)