Udacity-机器学习入门-特征缩放

  • 给出这三个人的身高和体重:

Udacity-机器学习入门-特征缩放_第1张图片

  • 按照我们的理解,明显Chris应该穿L码,但是根据身高+体重的结果,Chris却应该穿S。这是为什么呢?

因为在这里,体重完全主导了结果,身高的影响微乎其微。
而我们应该尽量让两者对结果有同等重要的影响。
这就引来了特征缩放——把特征都限制在[0,1]之间。

Udacity-机器学习入门-特征缩放_第2张图片

解释:

  • X’是你要构建的新特征
  • X(max)和X(min)是原始特征再被缩放前所取的最小值和最大值
  • X代表需要缩放的各项特征的原始值

特点:缩放后的特征值总是在0和1之间

  • 优点:你的预估输出相对稳定
  • 缺点:如果你的输出特征中有异常值,那么你的特征缩放就会比较棘手(最大值最小值可能是极端值)

  • 10.最小值/最大值重缩放器编码练习

def featureScaling(arr):
    import numpy as np
    arr = np.array(arr)
    max = np.max(arr)
    min = np.min(arr)
    new=[]
    for item in arr:
        if max != min :
            float (item)
            item =float(item-min)/(max-min)
            new.append(item)
        else:
            item=0.5
            new.append(item)
    return new

# tests of your feature scaler--line below is input data
data = [115, 140, 175]
print featureScaling(data)

这里要特别注意float的问题

如果不做类型转换,则会发生:(140-115)/175=0

但是float这里用的位置很重要,解释如下:

1/2=0
1.0/2=0.5

微笑脸~

  • sklearn中如何使用

访问Preprocessing data可以获取
可以通过MinMaxScaler 或者 MaxAbsScaler引入

示例(完成同上一代码相同的功能):

from sklearn.preprocessing import MinMaxScaler
import numpy
#这里numpy数组中的是特征,因为此处特征只有一个,所以看起来是这样的
#因为这里应该作为一个浮点数进行运算,所以数字后面要加.
weights = numpy.array([[115.],[140.],[175.]])
scaler = MinMaxScaler()
rescaled_weight = scaler.fit_transform(weights)
print rescaled_weight
  • 12.哪些机器学习算法会受到特征缩放的影响?

    1. 使用RBF核函数的SVN
    2. K-均值聚类

在这两种算法中计算距离时,你其实是在利用一个维度与另一个维度进行交换

如:

  • SVM计算最大距离时就是这种情况。如果我们把某一点增大至其他点的两倍,那么它的数值也会扩大一倍
  • K-均值聚类也是。计算各数据点到集群中心的距离
  • 15.缩放类型

MinMaxScaler

  • 16.计算重缩放特征

salary : 0.17962406631
stock : 0.0290205889347

你可能感兴趣的:(机器学习,机器学习)