均值归一化_数据预处理:标准化和归一化
網上很多關于標準化和歸一化的文章,不少是誤人子弟的存在。這篇文字希望給大家講清講透這兩個概念。
一、標準化(standardization)
公式一般為:(X-mean)/std,其中mean是平均值,std是方差。
從公式我們可以看出,標準化操作(standardization)是將數據按其屬性(按列)減去平均值,然后再除以方差。這個過程從幾何上理解就是,先將坐標軸零軸平移到均值這條線上,然后再進行一個縮放,涉及到的就是平移和縮放兩個動作。這樣處理以后的結果就是,對于每個屬性(每列)來說,所有數據都聚集在0附近,方差為1。計算時對每個屬性/每列分別進行。
下面我們通過實操加深印象,并真正理解標準化的實際意義。使用sklearn中的preprocessing中的scale()函數,可以直接將給定數據進行標準化。
首先我們導入需要的庫,和需要處理的數據。我們隨便導入一支股票,000002萬科a。(數據源來自tushare pro版,感謝挖地兔)。
接著,我們選取該股票最后的100個交易日的數據,選取價格和成交量兩個特征作為演示。很顯然,這兩個特征量綱不一樣,數值相差很大,需要對他們進行一個數據預處理。先看一下原始數據:
對原始數據進行標準化,如下:
看到變化了嗎,雖然各個點的相對位置看上去還是沒變,但是坐標軸變了。均值是0,方差為1。
還有一種標準話的方法是使用sklearn.preprocessing.StandardScaler類,主要是fit()和transform(),使用該類的好處在于可以保存訓練集中的參數(均值、方差)直接使用其對象轉換測試集數據。
二、歸一化(scale,縮放到一個指定范圍,一般是0到1之間)
公式一般為:(X-min)/(max-min),其中min和max分別是該屬性的最小值和最大值。
歸一化其實是一種不太標準的翻譯而已,真正要理解它,只需要知道它是一種縮放就行。歸一化操作的過程,首先是把某個屬性(按列)的最大值和最小值之間的距離看成是單位1,然后再看x和最小值的距離占總距離的比例。所以它總是一個處于0到1之間的百分數。
使用sklearn中的preprocessing中的MinMaxScaler類,可以實現歸一化,具體方法如下:
各個點的相對位置還是沒變,但是取值范圍變成了[0,1]。
什么時候需要標準化和歸一化?
那么是否任何情況都有必要進行標準化歸一化呢?答案是否定的。我們所熟知的決策樹、隨機森林等概率模型,就不需要。因為它們并不關心變量的值,而是關心變量的分布和變量之間的條件概率。
用AI改變金融交易,歡迎關注微信公眾號:煉金狂人
總結
以上是生活随笔為你收集整理的均值归一化_数据预处理:标准化和归一化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: panda提取时间戳中的日期_CMIP6
- 下一篇: 《PR基础教程入门篇-学习笔记》-012