發布時間: 2019-01-24 17:53:29
9.1.1 實驗介紹9.1.2 關于本實驗本實驗為 TensorFlow 線性回歸的一個實際案例即房價預測。9.1.3 實驗目的理解線性回歸。
理解如何利用 TensorFlow 做預測。9.1.4 實驗介紹本實驗通過一個預測房屋價格的實例來講解利用線性回歸預測房屋價格,以及在 tensorflow 中如何實現。平時常用的房價預測數據集為波士頓房價數據集,本實驗采用的是北京的房價數據集,更貼近國人的生活。9.1.5 實驗步驟步驟 1 步驟 1 登陸華為云。
步驟 2 點擊右上方的控制臺。
步驟 3 選擇彈性云服務器,網頁中會顯示該彈性云的可進行的操作,選擇遠程登錄。即登錄到彈性云服務器。
步驟 4 輸入指令 ll,查看當前目錄下的文件。
步驟 5 輸入命令 vi house_price.py,創建新的 Python 腳本。
步驟 6 輸入命令 i,進入編輯模式開始編輯,輸入腳本內容。
步驟 7 輸入命令 :wq!,保存并退出。
步驟 8 輸入命令 cat house_price.py 查看代碼。
步驟 9 運行測試。輸入命令:python3 house_price.py。
9.2 實驗過程9.2.1 設置編碼說明# coding:utf-89.2.2 導入模塊#載入此項目所需的庫
from future import print_function, division import tensorflow as tf
import pandas as pd import numpy as np
import matplotlib.pyplot as plt import seaborn
9.2.3 導入數據
該實驗數據來源為:https://github.com/cunxi1992/boston_housing 中的 bj_housing2.csv 文件。讀取數據:
train = pd.read_csv("bj_housing2.csv")
9.2.4 定義參數
train = train[train['Area'] < 12000]
train_X = train['Area'].values.reshape(-1, 1) train_Y = train['Value'].values.reshape(-1, 1) n_samples = train_X.shape[0]
# 定義參數,設置學習率
learning_rate = 2
# 設置訓練次數
training_epochs = 1000
# 設置多少次顯示一次
display_step = 50
9.2.5 定義占位符
# 定義 X,Y 占位符
X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32)
# 使用 Variable 定義的學習參數
W = tf.Variable(np.random.randn(), name="weight", dtype=tf.float32) b = tf.Variable(np.random.randn(), name="bias", dtype=tf.float32)
9.2.6 構建正向傳播結構
# 構建正向傳播結構
pred = tf.add(tf.multiply(W, X), b)
#損失函數
cost = tf.reduce_sum(tf.pow(pred-Y, 2)) / (2 * n_samples) # ?使用梯度下降優化器
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
9.2.7 初始化
# 激 活 Init
init = tf.global_variables_initializer()
# 啟動 session,初始化變量with tf.Session() as sess:
sess.run(init)
9.2.8 啟動循環
#啟動循環開始訓練
for epoch in range(training_epochs): for (x, y) in zip(train_X, train_Y):
sess.run(optimizer, feed_dict={X: x, Y: y})
#顯示訓練中的詳細信息
if (epoch + 1) % display_step == 0:
c = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.3f}".format(c), "W=", sess.run(W), "b=", sess.run(b)) #顯示訓練中的詳細信息
print("Optimization Finished!")
training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')
9.2.9 展示訓練結果
#展示訓練結果
plt.plot(train_X, train_Y, 'ro', label="Original data")
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label="Fitted line") plt.legend()
plt.show()
9.2.10 實驗結果
輸出結果:Epoch:0050cost=16308.796W=1.8889627b=155.08276Epoch:0100cost=16308.796W=1.8889627b=155.08276Epoch:0150cost=16308.796W=1.8889627b=155.08276Epoch:0200cost=16308.796W=1.8889627b=155.08276Epoch:0250cost=16308.796W=1.8889627b=155.08276Epoch:0300cost=16308.796W=1.8889627b=155.08276Epoch:0350cost=16308.796W=1.8889627b=155.08276Epoch:0400cost=16308.796W=1.8889627b=155.08276
Epoch:0450cost=16308.796W=1.8889627b=155.08276Epoch:0500cost=16308.796W=1.8889627b=155.08276Epoch:0550cost=16308.796W=1.8889627b=155.08276Epoch:0600cost=16308.796W=1.8889627b=155.08276……
9.3 實例描述
本實驗利用網上已有的北京房價數據集預測了北京的房價,實現了 TensorFlow 的線性回歸應
上一篇: {HTML5}表單選擇器-第一節