sklearn中爲什麼需要對數據進行縮放

爲什麼要做特徵縮放

大多數情況下,你的數據集將包含在大小、單位和範圍上差別很大的特徵。但是,由於大多數機器學習算法在計算中使用兩個數據點之間的歐氏距離,這會是一個問題。

如果不加考慮,這些算法只考慮特徵的大小而忽略了單位。在5kg和5000gms不同的單元之間,結果會有很大的差異。在距離計算中,大尺度的特徵比小尺度的特徵要重要得多
 

在運用一些機器學習算法的時候不可避免地要對數據進行特徵縮放(feature scaling),比如:在隨機梯度下降(stochastic gradient descent)算法中,特徵縮放有時能提高算法的收斂速度

特徵縮放還可以使機器學習算法工作的更好。比如在K近鄰算法中,分類器主要是計算兩點之間的歐幾里得距離,如果一個特徵比其它的特徵有更大的範圍值,那麼距離將會被這個特徵值所主導。因此每個特徵應該被歸一化,比如將取值範圍處理爲0到1之間。

什麼時候進行特徵縮放

我在這裏遵循的經驗法則是任何計算距離或假設正常的算法,縮放你的特徵!!

一些算法的例子,其中的特徵縮放是很重要的:

    k-最近鄰具有歐氏距離度量,對大小敏感,因此應該對所有特徵進行縮放,使其尺度相同。

    主成分分析(PCA),縮放是關鍵。主成分分析試圖得到方差最大的特徵,對於高幅值特徵,方差較大。這使得PCA傾向於高幅值特徵。

    梯度下降可以通過縮放進行加速。這是因爲θ在小尺度上會下降的很快,在大尺度上會很慢,所以,變量尺度不均勻的時候,在最優化的路徑上會有震盪,效率下降。

    基於樹的模型不是基於距離的模型,可以處理不同範圍的特性。因此,建模樹時不需要縮放

    線性判別分析(LDA)、樸素貝葉斯等算法設計的時候就準備好了處理這一問題,並相應地賦予特徵權重。在這些算法中執行特徵縮放可能沒有多大效果。
 

用那種縮放,sklearn中文教程有很多例子直接看代碼應該就能懂。

https://sklearn.apachecn.org/docs/0.21.3/40.html 或者 https://www.cnblogs.com/chaosimple/p/4153167.html

參考博客https://blog.csdn.net/ycarry2017/article/details/85051740

https://blog.csdn.net/u011984148/article/details/99440115

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章