python 資料分析基礎 day17-對模型自變數進行標準化

weixin_34208283發表於2018-03-30

今天是讀《python資料分析基礎》的第17天,讀書筆記的內容為變數的標準化。
在進行
在建模的時候,會遇到不同的自變數之間的量綱差距很大的情況,如輸入變數有年齡和身高(身高以m為單位)時,年齡的範圍為(0-100],而身高的範圍則是(0,2.5]。此時兩個變數之間的取值範圍差了一個數量級。若採用這兩個變數進行建模,則有可能出現這樣的情況:年齡對預測值的影響遠高於身高。這意味著年齡的影響程度被高估,身高的影響程度被低估。
為使得變數的影響程度能被正確估計,提高模型的預測精度,對自變數進行標準化是一個有效且可行的方式。
以下將用python演示對自變數進行標準化的操作:

注:資料來源於https://github.com/cbrownley/foundations-for-analytics-with-python/tree/master/statistics/winequality-both.csv

min-max標準化(又名離差標準化)

公式如下:
x*=(x-min)/(max-min)
程式碼如下:

import pandas as pd

#匯入資料
inputFile='資料檔案路徑'
wine=pd.read_csv(inputFile)

#將'tpye'和'quality'欄位以外的欄位進行標準化
#去除'tupe'和'quality'欄位
wineInd=wine[wine.columns.difference(['type','quality'])]

#min-max標準化
wineIndMinMax=(wineInd-wineInd.mean())/wineInd.std()
print(wineIndMinMax.head(5))

z-score 標準化(又名標準差標準化)

公式如下:
x*=(x-mean)/std
其中,mean按為樣本均值,std為樣本標準差
程式碼如下:

#自變數標準化

import pandas as pd

#匯入資料
inputFile=‘資料檔案路徑’
wine=pd.read_csv(inputFile)

#將'tpye'和'quality'欄位以外的欄位進行標準化
#去除'tupe'和'quality'欄位
wineInd=wine[wine.columns.difference(['type','quality'])]

#z-score標準化
wineIndZScore=(wineInd-wineInd.min())/(wineInd.max()-wineInd.min())
print(wineIndZScore.head(5))

相關文章