先了解壹下特征縮放的必要性。
假設目前 Chris 想知道自己應該穿多大的襯衫,但不知道自己的尺碼。他有兩個朋友? Cameron 和 Sarah 知道各自的尺碼,以及身高和體重,Chris 需要對比Cameron 和 Sarah 身高、體重、以及襯衫尺寸,推算出適合自己的尺寸。
在這種情況下,直觀的判斷可能是 Chris 應該是穿 L 尺碼的襯衫。S 尺碼似乎太小了。
well ! 對比數據需要壹個度量值,現在有身高和體重的兩種數據特征,需要壹個統壹的度量值。可使用 身高 + 體重 作為度量值。與 Chris 度量值最接近的,就是所選的尺寸。
chris 度量值:200。 Cameron 度量值:236 。 Sarah 度量值:217 。
根據上圖比較度量值。似乎Chris 更接近 Sarah 的 S 尺寸(從 Chris 度量值減去 Cameron 和 Sarah 的度量值,然後去絕對值比較可得出)。這似乎跟直觀的推斷結果不壹樣。為什麽會出現這種情況?
其實原因很簡單:使用身高 + 體重作為度量值,身高占有很大的比例,或者可以說身高越大,度量值越高。身高和體重兩種特征數據不平衡。
為此需要進行縮放操作,讓特征數據處於同壹個 0 ~ 1 之間,具有可比性。之後將特征數據進行合並,得出的結論將不相同。
特征縮放數學公式
sklearn 中 MinMaxScaler 的API : http://lijiancheng0614.github.io/scikit-learn/modules/generated/sklearn.preprocessing.MinMaxScaler.html
sklearn 中 特征縮放例子 : http://lijiancheng0614.github.io/scikit-learn/modules/preprocessing.html#preprocessing