iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0

我們如何用tensorflow像R一樣快速地建立一個迴歸,我今天就使用skLearn這個package,從裡面的datasets就可以載入資料籍,然而我們今天就要透過這個資料籍,來做波士頓的房價預測。

Import 資料

    from sklearn.datasets import load_boston
    Boston =load_boston()
    print(Boston)

https://ithelp.ithome.com.tw/upload/images/20200922/201302460xgpt0ikQo.png
有關bosten房價的資料就呈現出來了
但由於上面的資料太混砸了,我想讓數據剛好對到每一個表格,並且還要新增中位數的資料

import pandas as pd
TB = pd.DataFrame(data=Boston.data,columns=Boston.feature_names)
TB['MEDV']=Boston.target
print(TB.head())

https://ithelp.ithome.com.tw/upload/images/20200922/20130246zqCTFTGh58.png
這樣我們就能清楚的知道每一本資料的犯罪率、失業率,最後面也新增了房價的中位數欄位。

到這裡我們解決了資料的處理,現在要來做圖我以X軸為低收入戶的比率,y軸為房價。但因為我用的環境是pycharm所以要作圖的話還要外掛裝Pydot和graphviz這裡我會先import matplotlib.pyplot as plt,讓圖跑得來。

import matplotlib.pyplot as plt
import seaborn as sns
sns.scatterplot(TB['LSTAT'],TB.MEDV)
plt.show()

https://ithelp.ithome.com.tw/upload/images/20200922/20130246VBZIbIu9i2.png

透過這張圖我們可以知道跟預期一樣當低收入戶人越多,房價會越低

接下來透過tensorflow來搭建網路化出預測線,我會透過keras來搭建一個sequential的網路,但現在你只是搭建一個空的東西甚麼都沒有,所以我會透過dense來快速的搭建一個網路。

import tensorflow as tf
from tensorflow import keras
LR =tf.keras.Sequential(name='Linear Regression')
LR.add(tf.keras.layers.Dense(1,input_shape=(1,)))
print(LR.summary())

https://ithelp.ithome.com.tw/upload/images/20200922/20130246OaF4ZqIN6g.png
從這張圖我們知道我的網路只有一層,ouput有兩個,有兩個參數並且可以被訓練。

訓練模型

訓練有很多方法,我今天最佳化的方法是用adam,Learning rate我調成0.01,損失函數用MeanSquaredError(),經過我的測試發現大概訓練200次loss值會呈現平穩狀態,所以我的epochs調成200。

LR =tf.keras.Sequential(name='Linear Regression')
LR.add(tf.keras.layers.Dense(1,input_shape=(1,)))
LR.compile(tf.keras.optimizers.Adam(0.01),loss = tf.keras.losses.MeanSquaredError())
LR.fit(TB.LSTAT,TB.MEDV,epochs=200)

預測

myPre =  LR.predict(TB.LSTAT)
sns.scatterplot(TB.LSTAT,TB.MEDV)
sns.lineplot(TB.LSTAT,myPre[:,0])
plt.show()

https://ithelp.ithome.com.tw/upload/images/20200922/20130246YfUHxSCfnV.png

這樣就大功告成了!!!!!!!!!!!

參考
https://www.youtube.com/watch?v=4OnYrSGaSKw


上一篇
損失函數
下一篇
Kaggle 介紹
系列文
Tensorflow2.030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言