人工智能AI培訓_TensorFlow 實現線性回歸
發布時間:
2019-06-03 14:55:49
人工智能AI培訓_TensorFlow 實現線性回歸
1.實驗介紹
1.1.關于本實驗
本實驗為TensorFlow線性回歸的一個實際案例即房價預測。
1.2.實驗目的
理解線性回歸。
理解如何利用TensorFlow做預測。
1.3.實驗介紹
本實驗通過一個預測房屋價格的實例來講解利用線性回歸預測房屋價格,以及在tensorflow中如何實現。平時常用的房價預測數據集為波士頓房價數據集,本實驗采用的是北京的房價數據集,更貼近國人的生活。
1.4.實驗步驟
步驟 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。
2.實驗過程
2.1.設置編碼說明
# coding:utf-8
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
2.3.導入數據
該實驗數據來源為:https://github.com/cunxi1992/boston_housing中的bj_housing2.csv文件。
讀取數據:
train = pd.read_csv("bj_housing2.csv")
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
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)
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)
2.7.初始化
# 激活Init
init = tf.global_variables_initializer()
# 啟動session,初始化變量
with tf.Session() as sess:
sess.run(init)
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')
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()
2.10.實驗結果
輸出結果:
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.實例描述
本實驗利用網上已有的北京房價數據集預測了北京的房價,實現了TensorFlow的線性回歸應用。
?
上一篇:
HTML5培訓_HTML表格(table)制作
下一篇:
Java培訓_Java NIO的緩沖區介紹