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

来源:互联网 发布:软件开发费用报价 编辑:程序博客网 时间:2024/05/27 00:33
  • 给出这三个人的身高和体重:

这里写图片描述

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

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

这里写图片描述

解释:

  • 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 datadata = [115, 140, 175]print featureScaling(data)

这里要特别注意float的问题

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

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

1/2=01.0/2=0.5

微笑脸~

  • sklearn中如何使用

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

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

from sklearn.preprocessing import MinMaxScalerimport 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

阅读全文
0 0
原创粉丝点击