全部課程
發(fā)布時(shí)間: 2019-01-24 17:53:29
9.1.1 實(shí)驗(yàn)介紹9.1.2 關(guān)于本實(shí)驗(yàn)本實(shí)驗(yàn)為 TensorFlow 線性回歸的一個(gè)實(shí)際案例即房?jī)r(jià)預(yù)測(cè)。9.1.3 實(shí)驗(yàn)?zāi)康睦斫饩€性回歸。
理解如何利用 TensorFlow 做預(yù)測(cè)。9.1.4 實(shí)驗(yàn)介紹本實(shí)驗(yàn)通過(guò)一個(gè)預(yù)測(cè)房屋價(jià)格的實(shí)例來(lái)講解利用線性回歸預(yù)測(cè)房屋價(jià)格,以及在 tensorflow 中如何實(shí)現(xiàn)。平時(shí)常用的房?jī)r(jià)預(yù)測(cè)數(shù)據(jù)集為波士頓房?jī)r(jià)數(shù)據(jù)集,本實(shí)驗(yàn)采用的是北京的房?jī)r(jià)數(shù)據(jù)集,更貼近國(guó)人的生活。9.1.5 實(shí)驗(yàn)步驟步驟 1 步驟 1 登陸華為云。
步驟 2 點(diǎn)擊右上方的控制臺(tái)。
步驟 3 選擇彈性云服務(wù)器,網(wǎng)頁(yè)中會(huì)顯示該彈性云的可進(jìn)行的操作,選擇遠(yuǎn)程登錄。即登錄到彈性云服務(wù)器。
步驟 4 輸入指令 ll,查看當(dāng)前目錄下的文件。
步驟 5 輸入命令 vi house_price.py,創(chuàng)建新的 Python 腳本。
步驟 6 輸入命令 i,進(jìn)入編輯模式開(kāi)始編輯,輸入腳本內(nèi)容。
步驟 7 輸入命令 :wq!,保存并退出。
步驟 8 輸入命令 cat house_price.py 查看代碼。
步驟 9 運(yùn)行測(cè)試。輸入命令:python3 house_price.py。
9.2 實(shí)驗(yàn)過(guò)程9.2.1 設(shè)置編碼說(shuō)明# coding:utf-89.2.2 導(dǎo)入模塊#載入此項(xiàng)目所需的庫(kù)
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 導(dǎo)入數(shù)據(jù)
該實(shí)驗(yàn)數(shù)據(jù)來(lái)源為:https://github.com/cunxi1992/boston_housing 中的 bj_housing2.csv 文件。讀取數(shù)據(jù):
train = pd.read_csv("bj_housing2.csv")
9.2.4 定義參數(shù)
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]
# 定義參數(shù),設(shè)置學(xué)習(xí)率
learning_rate = 2
# 設(shè)置訓(xùn)練次數(shù)
training_epochs = 1000
# 設(shè)置多少次顯示一次
display_step = 50
9.2.5 定義占位符
# 定義 X,Y 占位符
X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32)
# 使用 Variable 定義的學(xué)習(xí)參數(shù)
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 構(gòu)建正向傳播結(jié)構(gòu)
# 構(gòu)建正向傳播結(jié)構(gòu)
pred = tf.add(tf.multiply(W, X), b)
#損失函數(shù)
cost = tf.reduce_sum(tf.pow(pred-Y, 2)) / (2 * n_samples) # ?使用梯度下降優(yōu)化器
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
9.2.7 初始化
# 激 活 Init
init = tf.global_variables_initializer()
# 啟動(dòng) session,初始化變量with tf.Session() as sess:
sess.run(init)
9.2.8 啟動(dòng)循環(huán)
#啟動(dòng)循環(huán)開(kāi)始訓(xùn)練
for epoch in range(training_epochs): for (x, y) in zip(train_X, train_Y):
sess.run(optimizer, feed_dict={X: x, Y: y})
#顯示訓(xùn)練中的詳細(xì)信息
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)) #顯示訓(xùn)練中的詳細(xì)信息
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 展示訓(xùn)練結(jié)果
#展示訓(xùn)練結(jié)果
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 實(shí)驗(yàn)結(jié)果
輸出結(jié)果: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 實(shí)例描述
本實(shí)驗(yàn)利用網(wǎng)上已有的北京房?jī)r(jià)數(shù)據(jù)集預(yù)測(cè)了北京的房?jī)r(jià),實(shí)現(xiàn)了 TensorFlow 的線性回歸應(yīng)