特征缩放的内涵(Feature Scaling)
由于两个特征参数的绝对值可能差距较大,因此用直接使用这些特征时,较大的那个数值可能发挥更大的主导作用,这样会对结果的准确性产生影响。因此把这些特征缩放到[0,1]的区间来避免这个问题。
在如图所示的例子中,计算机试图通过身高和体重求和的方法来判断到底Chris应该穿与Cameron一样号码的T-shirt还是应该穿与Sarah一样的。
但由于体重的绝对值远远大于身高的绝对值,所以出现了上述问题。按照直觉,Chris应该穿与Cameron一样的L,但按照那种方法计算出来的结果确实穿与Sarah一样的S。
具体的处理方法:
归一化。
比如原来的体重有三个[115,140,175]
那么找到最大最小值,175和115,这样带入公式,140就转化为:
具体的实现方法:
import numpy as np
def featureScaling(arr):
numbers = arr
arr = []
for num in numbers:
arr.append(float(num))
arr = np.array(arr)
arr = (arr - arr.min())/(arr.max()-arr.min())
return arr
or
from skearn.preprocessing import MinMaxScaler
sclaer = MinMaxScaler()
rescaled_weight = sclaer.fit_transform(data)
使用特征缩放会影响到的算法:
SVM和K-means中我们都需要计算距离,因此会受到特征缩放的影响
在线性回归中,计算系数时总是使用比例,因此不受到缩放的影响
在DT中,你只要回答YN,因此也不受到缩放的影响