TensorFlow 實戰
多元線性迴歸問題
本文小編將以一個具體例子來說明如何用 TensorFlow 來實現多元線性迴歸問題。我們以波士頓房價預測爲例進行講解。
1、 情景引入
波士頓房價數據集包括506個樣本,每個樣本包括12個特徵變量和該地區的平均房價。房價顯然和多個特徵變量是相關的,因此需要選擇多個特徵變量來建立線性方程,這就是典型的多變量線性迴歸問題,下面是多元線性迴歸模型公式:y=w0+w1x1+w2x2+...+wn*xn+b
下面是波士頓房價的數據集部分展示,後面我們將使用數據集進行模型實現。
2、讀取數據並歸一化
通過pandas讀取數據文件,列出統計概述。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import pandas as pd
#讀取數據文件
df = pd.read_csv("./boston.csv",header=0)
#顯示數據摘要描述信息
print(df.describe())
#對數據歸一化到0-1之間
for i in range(12):
df[:,i]=(df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min())
#x_data爲歸一化後的前12列特徵數據
x_data = df[:,:12]
#y_data爲最後一列標籤數據
y_data = df[:12]
3、模型定義
首先定義特徵數據和標籤數據的佔位符,shape中None表示行的數量未知,在實際訓練時決定一次代入多少行樣本,從一個樣本的隨機SDG到批量SDG都可以。
x = tf.placeholder(tf.float32,[None,12],name="x")y = tf.placeholder(tf.float32,[None,1],name="y")
定義模型函數
4、訓練模型
設置訓練超參數
#迭代次數train_epochs = 50#學習率learning_rate = 0.01
定義均方差損失函數
with tf.name_scope("LossFunction"): loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方誤差
選擇優化器,初始化一個GradientDescentOptimizer
#梯度下降優化器optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
5、創建會話
聲明會話
sess = tf.Session()
變量初始化
init = tf.global_variables_initializer()sess.run(init)
6、迭代訓練
模型訓練階段,設置迭代次數,每次通過將樣本逐個輸入模型,進行梯度下降優化操作,每輪迭代後,繪製出模型曲線下圖爲最後的訓練結果
7、訓練結果的可視化
plt.plot(loss_list)
8、TensorBoard 可視化
聲明會話
sess = tf.Session()#定義初始化變量的操作init = tf.global_variables_initializer()
爲 TensorBoard 可視化準備數據
#設置日誌存儲目錄logdir = 'd:/log'sum_Loss = tf.summary.scalar("loss",loss_function)merged = tf.summary.merge_all()
創建摘要的文件寫入器
sess.run(init)writer = tf.summary.FileWwriter(logdir,sess.graph)
查看計算圖TensorBoard查看loss好啦,最後趕快動手嘗試一下屬於你們的第一個多元迴歸模型的建立吧!
本文來自讀者投稿,歡迎大家點擊下面鏈接進行投稿:
歡迎投稿