用tensorflow來做回歸分析,基於梯度下降法這裡以一元回歸分析為例子來說明如何用tensorflow實現回歸分析。
1、產生資料
採用隨機的方式來產生。
先基於均值為0,方差為0.9的正態分佈產生隨機數x,再通過線性變換產生y,再新增乙個均值為0,方差為0.5的雜訊。這樣便得到資料x和y。
import numpy as np
#產生100條資料
num_puntos = 100
conjunto_puntos =
for i in range(num_puntos):
x1= np.random.normal(0.0, 0.9)
y1= x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.05)
x_data = [v[0] for v in conjunto_puntos]
y_data = [v[1] for v in conjunto_puntos]
畫出散點圖
定義模型
import tensorflow as tf
#定義w和b,這裡的w是乙個數,取值範圍為-1到1,b為乙個數
w = tf.variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.variable(tf.zeros([1]))
#模型y = w * x_data + b
#損失函式
loss = tf.reduce_mean(tf.square(y - y_data))
#優化,基於梯度下降法的優化,步長為0.5
optimizer = tf.train
.gradientdescentoptimizer(0.5)
#對損失函式優化
train = optimizer.minimize(loss)
#初始化
init = tf.global_variables_initializer()
#啟**計算
sess = tf.session()
sess.run(init)
迭代計算,迭代100步,每10次輸出乙個結果
for
step
in range(100):
sess.run(train)
ifstep % 10 == 0:
print(step, sess.run(w), sess.run(b))
結果:
0 [ 0.13928029] [ 0.30465567]
10 [ 0.10003368] [ 0.29671374]
20 [ 0.10003368] [ 0.29671374]
30 [ 0.10003368] [ 0.29671374]
40 [ 0.10003368] [ 0.29671374]
50 [ 0.10003368] [ 0.29671374]
60 [ 0.10003368] [ 0.29671374]
70 [ 0.10003368] [ 0.29671374]
80 [ 0.10003368] [ 0.29671374]
90 [ 0.10003368] [ 0.29671374]
畫出散點圖和回歸線
完整的**見github: 回歸
Tensorflow實現嶺回歸
嶺回歸可以看作是線性回歸的一種增強版,實現的時候無非就是加入乙個二範數正則化項,但是應當注意,這裡只對於權重進行懲罰,偏置項是不加入正則化的,具體理論可以參見相關的 和blog,在此不贅述。這裡還是使用tf實現了嶺回歸演算法,並實際應用在了乙個真實資料集而非人工資料集上,資料及規模相比於之前的資料也...
Tensorflow實現邏輯回歸
import tensorflow as tf 匯入mnist資料集 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets temp data one hot true 定...
Tensorflow 非線形回歸
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 使用numpy來生成兩百個隨機點,範圍在 0.5到0.5之間,均勻分布 np.newaxis 插入新的維度 x data np.linspace 0....