本文小編將以一個具體例子來講明如何用 TensorFlow 來實現多元線性迴歸問題。咱們以波士頓房價預測爲例進行講解。app
波士頓房價數據集包括506個樣本,每一個樣本包括12個特徵變量和該地區的平均房價。房價顯然和多個特徵變量是相關的,所以須要選擇多個特徵變量來創建線性方程,這就是典型的多變量線性迴歸問題,下面是多元線性迴歸模型公式:y=w0+w1x1+w2x2+...+wn*xn+b
下面是波士頓房價的數據集部分展現,後面咱們將使用數據集進行模型實現。ide
經過pandas讀取數據文件,列出統計概述。函數
%matplotlib inline
學習
import matplotlib.pyplot as plt
優化
import numpy as np
spa
import tensorflow as tf
scala
import pandas as pd
3d
#讀取數據文件
日誌
df = pd.read_csv("./boston.csv",header=0)
code
#顯示數據摘要描述信息
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]
首先定義特徵數據和標籤數據的佔位符,shape中None表示行的數量未知,在實際訓練時決定一次代入多少行樣本,從一個樣本的隨機SDG到批量SDG均可以。
x = tf.placeholder(tf.float32,[None,12],name="x")y = tf.placeholder(tf.float32,[None,1],name="y")
定義模型函數
設置訓練超參數
#迭代次數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)
聲明會話
sess = tf.Session()
變量初始化
init = tf.global_variables_initializer()sess.run(init)
模型訓練階段,設置迭代次數,每次經過將樣本逐個輸入模型,進行梯度降低優化操做,每輪迭代後,繪製出模型曲線下圖爲最後的訓練結果
plt.plot(loss_list)
聲明會話
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
好啦,最後趕快動手嘗試一下屬於大家的第一個多元迴歸模型的創建吧!
本文來自讀者投稿,歡迎你們點擊下面連接進行投稿:
歡迎投稿