iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
AI & Data

實實在在地學習人工智慧-基礎理論探討與經典案例實作系列 第 26

【Day 26】開始寫程式拉!房價預測實戰演練 -標準化介紹與實踐

  • 分享至 

  • xImage
  •  

今天是國慶連假第二天,也是我的鐵人賽第26天,讓我們繼續努力!昨天已經把相關係數小的資料們直接丟棄不理,並且從訓練資料中切出20%的資料當作驗證集。今天要將資料進行標準化或是正規化進行處理,這個舉動對我們訓練會有相當大的幫助哦!

介紹下標準化(Standardization)與正規化(Normalization)

為什麼要做這個舉動?

因為在行與行(x1和x2)之間可能會有數字上很大的差異,這會對在訓練模型時有不好的影響,就好比x1落在100000~500000;x2落在1~5,這極大的差距可想而知,尤其當他們的相關係數都很大時(可能都是接近1),那x1會造成的影響就可能大於x2。
就像是今天房價與面積、樓層的關係:y = a * x1(坪數) + b * x2(樓層)
而面積可以是50~300(m^2);樓層平均大概只會落在1~5,這樣數字的差距會使得目標函數變扁,進而造成在訓練過程中疊代速度變慢!可以看下方的圖:
1.在還沒進行處理前:
https://ithelp.ithome.com.tw/upload/images/20191012/20121049tJok43k7Op.jpg
2.處理後:
https://ithelp.ithome.com.tw/upload/images/20191012/20121049PturFNAlt3.jpg
上方兩圖出處
這時候標準化/正規化就很重要啦!
那麼以下兩者對數據處理動作的優點都是:
1.提升模型精準度
2.提升收斂速度

標準化(Standardization)

  1. 標準化公式:
    https://ithelp.ithome.com.tw/upload/images/20191012/20121049LXHXnbkvXQ.jpg
    x' = 更新後數值
    x = 現在數值
    μ = 這行數據的平均值
    σ = 這行數據的標準差
  2. 標準化的特別:在做標準化有個很重大的前提,如果原本資料是類似高斯分布的話,效果會較佳,反之,若原本與高斯分布相差太遠,做出來的結果可能會更差。那做完標準化後,均值會變成0,標準差會變成1。

正規化(Normalization)

  1. 正規化公式:
    https://ithelp.ithome.com.tw/upload/images/20191012/20121049cnSuMxpjw5.jpg
    x' = 更新後數值
    x = 現在的數值
    max(x) = 這行最大的數值
    min(x) = 這行最小的數值
  2. 正規化的特別:正規化會將結果映射在0~1之間,但也像標準化有期望原本資料像是高斯分布一樣,正規化若是遇上不穩定的max或是min會使得正規化結果表現不好!

繼續實戰演練

先將原本的訓練資料和驗證資料都先標準化!

from sklearn import preprocessing #引入所需函式庫
normalize = preprocessing.StandardScaler() #取一個短的名字
# 標準化處理
X_trian_normal_data = normalize.fit_transform(X_train_dataset) #將訓練資料標準化
X_validation_normal_data = normalize.fit_transform(X_validation_dataset) #將驗證資料標準化

print(X_trian_normal_data)
print('*'*50)
print(X_validation_normal_data)

輸出:

[[ 2.13150648  1.86572881  1.78757018  0.60188649  1.68363344  1.43474327]
 [-0.79485211 -0.38726187 -0.71540986 -1.21671763 -1.05711061 -0.79116606]
 [-0.79485211 -0.43096212 -0.52782035 -1.08041967  0.31326141 -0.19886401]
 ...
 [-0.06326246 -2.55770764  0.4208466   0.7459729   0.31326141  0.31223535]
 [ 0.66832719  0.77807813  1.06133079  0.0742187   0.31326141 -0.25618356]
 [ 0.66832719  0.34350342  0.09122504  0.62330474  0.31326141  0.05907398]]
**************************************************
[[-0.10448035  1.80908987  3.08966184  1.77891255  0.30770478  0.05915902]
 [-0.10448035 -0.50234569 -0.48512908  0.13380716 -0.92311434 -0.99987664]
 [-0.79784997 -0.68477796 -0.43691417 -0.52458613 -0.92311434 -0.51376191]
 ...
 [-0.10448035 -0.67537423  1.13581016  1.79822542 -0.92311434 -1.10404408]
 [-1.49121958 -1.22831325 -1.05911606 -1.39366529 -2.15393345 -2.04155105]
 [-0.79784997 -1.0214313  -1.35070145 -0.68611196 -0.92311434 -0.79154175]

明天會開始架設神經網路!敬請期待!


上一篇
【Day 25】開始寫程式拉!房價預測實戰演練 -篩選資料拔除和切分出驗證集
下一篇
【Day 27】開始寫程式拉!房價預測實戰演練 -Keras建立神經網路和測試集資料調整
系列文
實實在在地學習人工智慧-基礎理論探討與經典案例實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言