線性回歸,是利用數理統計中回歸分析,來確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法,運用十分廣泛。其表達形式為y = w』x+e,e為誤差服從均值為0的正態分佈。
說白了就是求資料之間關係的一種形式。回歸分析中,只包括乙個自變數和乙個因變數,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性回歸分析。
實現原理:
根據資料建立回歸模型,w1x1+w2x2+……+b = y,通過真實值與**值之間建立誤差,使用梯度下降優化得到損失最小對應的權重和偏置。最終確定模型的權重和偏置引數。最後可以用這些引數進行**。
隨機生成1000個資料點,圍繞在y=0.1x+0.5 周圍,設定斜率為0.1,偏置值是0.5
num_points = 1000
vectors_set =
for i in range(num_points):
x1 = np.random.normal(0.0, 0.55)
y1 = x1 * 0.1 + 0.5 + np.random.normal(0.0, 0.03)
# 生成一些樣本
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
#顯示出所有的資料
plt.scatter(x_data,y_data,c='r')
plt.show()
得到如下的圖
構造線性回歸模型
# 生成1維的w矩陣,取值是[-1,1]之間的隨機數
w = tf.variable(tf.random_uniform([1], -1.0, 1.0), name='w')
# 生成1維的b矩陣,初始值是0
b = tf.variable(tf.zeros([1]), name='b')
# 經過計算得出預估值y
y = w * x_data + b
# 以預估值y和實際值y_data之間的均方誤差作為損失
loss = tf.reduce_mean(tf.square(y - y_data), name='loss')
# 採用梯度下降法來優化引數
optimizer = tf.train.gradientdescentoptimizer(0.5)
# 訓練的過程就是最小化這個誤差值
train = optimizer.minimize(loss, name='train')
sess = tf.session()
init = tf.global_variables_initializer()
sess.run(init)
# 初始化的w和b是多少
print ("w =", sess.run(w), "b =", sess.run(b), "loss =", sess.run(loss))
# 執行20次訓練
for step in range(20):
sess.run(train)
# 輸出訓練好的w和b
print ("w =", sess.run(w), "b =", sess.run(b), "loss =", sess.run(loss))
得到下面結果
可以發現 w 取值逐漸趨近於0.1 , b取值逐漸趨近於0.5 loss值趨近於0
可以通過下面**畫出擬合直線
plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
得到的影象如下
TensorFlow 實現Softmax 回歸模型
importtensorflowastf importnumpyasnp importtensorflow.examples.tutorials.mnist.input dataasinput data mnist input data.read data sets mnist data one h...
tensorflow實現softmax回歸函式
softmax函式可以把多個值歸一化到 0,1 區間中,以實現分類等問題 輸出 5 dtype float32,numpy array 0.1738882 0.7230672,0.8248408,0.8263163 1.5385914 1.3104331 0.91867334 1.5094105,0...
TensorFlow 線性回歸實現
usr bin env python3 coding utf 8 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt if name main 給引數賦值 learning rate 0.01 trai...