iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
1
AI & Data

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

【Day 29】開始寫程式拉!房價預測實戰演練 -拿出訓練好的模型預測測試集和上傳kaggle

  • 分享至 

  • xImage
  •  

昨天已經將自己的model成功訓練完畢了,也看到loss有逐步下降!今天是第29天了,今天要將訓練好的model拿來估計一下測試集,並且預測結果打包成CSV檔上傳至kaggle!

實戰演練

先處理一下test

因為我們在做model訓練時,輸入只有相對係數高的那些行,所以如果這時候做測試集時若是輸入不一樣的shape會造成bug的出現,因此有必要也對測試集進行相同的手法!

for i in df_test.columns: #查找原本資料中所有columns
    if i not in high_corr: 
        #如果沒有在訓練時相關係數大於0.6的話就拔掉,因為真正影響房價的不是小於0.6的
        df_test = df_test.drop(i,axis=1) 
        #i是跑過test裡面的columns所有人,axis=1是指定要丟掉"行"
print(df_test) #看一下刪掉相關係數小的人樣子
X_test_dataset = df_test.values #只要數值就好不要dataframe形式
from sklearn import preprocessing
normalize = preprocessing.StandardScaler() 
# 標準化處理
X_test_normal_data = normalize.fit_transform(X_test_dataset)

print(X_test_normal_data) #看一下標準化的結果

輸出片段:
https://ithelp.ithome.com.tw/upload/images/20191014/20121049OwmPaBUnSR.jpg
https://ithelp.ithome.com.tw/upload/images/20191014/2012104944CJzmrciz.jpg

載入儲存的model估測看看測試集房價

model.load_weights('good.h5') #召喚之前儲存的model
pred = model.predict(X_test_normal_data) #括號內填入要預測的資料
print(pred)

輸出:

[[128880.6  ]
 [157887.36 ]
 [150417.52 ]
 ...
 [150471.03 ]
 [108754.164]
 [243079.23 ]]

將預測資料打包成csv檔

with open('house_predict.csv', 'w') as f: #開啟一個檔案,house_predict.csv是名字;w是寫入
    f.write('id,SalePrice\n') #寫入最上方的列,並用\n往下一列
    for i in range(len(pred)): #len(pred)看整個test有多長,然後用for去跑全部
        f.write(str(i + 1461) + ',' + str(float(pred[i])) + '\n')
        #寫入,這邊特別注意「+1461」,因為它給的sample_submission是從1461開始
        #中間加上逗號是因為前面有介紹過csv檔是以逗號為間隔的檔案
        #str(float(pred[i]):先把它變成浮點數,再用str()把它變回字串
        #後面的'\n'是要換下一列的意思
        #注意到中間全部是用「+號」隔開,這是字串的基本招式唷

上傳至Kaggle看看

先去找到儲存好的csv檔

可以去存放自己py程式碼的資料夾找找,會看到一個csv檔如下:
https://ithelp.ithome.com.tw/upload/images/20191014/201210498dGeLXCC5q.jpg

回到Kaggle網站

點選右上Submit Predictions,然後點選下面的紅框框,這樣就可以選你預測好的CSV檔案囉
https://ithelp.ithome.com.tw/upload/images/20191014/20121049CPtBSKGIm9.png
繳交後可以點Leaderboard去看自己和其他人的排名!
https://ithelp.ithome.com.tw/upload/images/20191014/20121049tXK4Ov4wi1.jpg
那最右邊是你繳交後過了幾分鐘,再來是繳交第幾次(這個比賽一天只能交10次哦)、你的分數(這邊是越低越好哦)!
不過我也只有在3000多名,所以還是有很大的進步空間呢。

終於打到第29天了,明天會做個總結,還有可以從哪個方向去努力試圖讓分數更好!
(DAY27 28還在補充完畢囉!)


上一篇
【Day 28】開始寫程式拉!房價預測實戰演練 -開始訓練並畫出Loss曲線
下一篇
【Day 30】我的loss還能更低嗎?以及30天的回顧!
系列文
實實在在地學習人工智慧-基礎理論探討與經典案例實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言