您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何用tensorflow做線性回歸,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
01
—
Tensorflow做線性回歸
前面實現過最小二乘法的線性回歸算法,梯度下降求解過程,詳見文章:
機器學習之線性回歸:算法兌現為python代碼
那么,借助tensorflow如何實現最小二乘法的線性回歸呢?基本的思路,首先生成擬合的數據集,然后構建線性回歸的Graph,最后在Session中迭代train器,得到擬合的參數w和b,畫出擬合曲線。
1.1 生成擬合的數據集,數據集只含有一個特征,注意誤差項需要滿足高斯分布,其分布的代碼如下,首先導入3個庫,
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#數據點100個
num_points = 100
vectors_set = []
for i in range(num_points):
x1 = np.random.normal(0.,0.55)
y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)
vectors_set.append([x1,y1])
#特征x
x_data = [v[0] for v in vectors_set]
#標簽值y
y_data = [v[1] for v in vectors_set]
plt.scatter(x_data,y_data,c='b')
plt.show()
產生的數據分布如下所示:
1.2 構建線性回歸的Graph
w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')
b = tf.Variable(tf.zeros([1]),name='myb')
#經過計算得出預估值
y = w * x_data + b
#以預估值y和實際值y_data之間的均方差作為損失
loss = tf.reduce_mean(tf.square(y-y_data,name='mysquare'), name='myloss')
#采用梯度下降法來優化參數
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss,name='mytrain')
1.3 在Session中運行構建好的Graph
#global_variables_initializer初始化Variable等變量
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#迭代20次train
for step in range(20):
sess.run(train)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#寫入磁盤,提供tensorboard在瀏覽器中展示用
writer = tf.summary.FileWriter("./mytmp",sess.graph)
打印下w和b,損失值的變化情況,可以看到損失值從0.24降到0.0008.
1.4繪制擬合曲線
plt.scatter(x_data,y_data,c='b')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
02
—
Tensorboard展示Graph
關于如何在tensorboard中展示構建好的Graph,請參考文章,不再贅述,直接分析tensorflow繪制的graph.
TensorFlow筆記|Get Started
得到的Graph界面如下所示:
Main Graph視圖放大版,數據從底部是如何經過Operators,流動到頂部的,大家可以順一下。
以上就是如何用tensorflow做線性回歸,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。