人工智能AI培訓(xùn)_TensorFlow 實(shí)現(xiàn)線性回歸
發(fā)布時(shí)間:
2019-06-03 14:55:49
人工智能AI培訓(xùn)_TensorFlow 實(shí)現(xiàn)線性回歸
1.實(shí)驗(yàn)介紹
1.1.關(guān)于本實(shí)驗(yàn)
本實(shí)驗(yàn)為T(mén)ensorFlow線性回歸的一個(gè)實(shí)際案例即房?jī)r(jià)預(yù)測(cè)。
1.2.實(shí)驗(yàn)?zāi)康?br> 理解線性回歸。
理解如何利用TensorFlow做預(yù)測(cè)。
1.3.實(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ó)人的生活。
1.4.實(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。
2.實(shí)驗(yàn)過(guò)程
2.1.設(shè)置編碼說(shuō)明
# coding:utf-8
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
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")
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
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)
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)
2.7.初始化
# 激活I(lǐng)nit
init = tf.global_variables_initializer()
# 啟動(dòng)session,初始化變量
with tf.Session() as sess:
sess.run(init)
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')
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()
2.10.實(shí)驗(yàn)結(jié)果
輸出結(jié)果:
Epoch: 0050 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0100 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0150 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0200 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0250 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0300 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0350 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0400 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0450 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0500 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0550 cost= 16308.796 W= 1.8889627 b= 155.08276
Epoch: 0600 cost= 16308.796 W= 1.8889627 b= 155.08276
……
3.實(shí)例描述
本實(shí)驗(yàn)利用網(wǎng)上已有的北京房?jī)r(jià)數(shù)據(jù)集預(yù)測(cè)了北京的房?jī)r(jià),實(shí)現(xiàn)了TensorFlow的線性回歸應(yīng)用。
?
上一篇:
HTML5培訓(xùn)_HTML表格(table)制作
下一篇:
Java培訓(xùn)_Java NIO的緩沖區(qū)介紹