1. 程式人生 > >特征縮放_概念

特征縮放_概念

jsb pan 距離 int 特征值 The res 輸出 ces

  • 給出這三個人的身高和體重:

技術分享圖片

  • 按照我們的理解,明顯Chris應該穿L碼,但是根據身高+體重的結果,Chris卻應該穿S。這是為什麽呢?

因為在這裏,體重完全主導了結果,身高的影響微乎其微。
而我們應該盡量讓兩者對結果有同等重要的影響。
這就引來了特征縮放——把特征都限制在[0,1]之間。

技術分享圖片

解釋:

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

特點:縮放後的特征值總是在0和1之間

  • 優點:你的預估輸出相對穩定
  • 缺點:如果你的輸出特征中有異常值,那麽你的特征縮放就會比較棘手(最大值最小值可能是極端值)

代碼示例:

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

哪些機器學習算法會受到特征縮放的影響?

  1. 使用RBF核函數的SVN
  2. K-均值聚類

在這兩種算法中計算距離時,你其實是在利用一個維度與另一個維度進行交換

如:

  • SVM計算最大距離時就是這種情況。如果我們把某一點增大至其他點的兩倍,那麽它的數值也會擴大一倍
  • K-均值聚類也是。計算各數據點到集群中心的距離

特征縮放_概念