线性回归 (Linear Regression) 是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析,用来肯定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分普遍。线性回归问题也是机器学习的入门级知识,下面就和小编一块儿来学习一下用 Python + TensorFlow 如何实现线性回归吧!算法
单变量的线性回归方程能够表示为:微信
y=w*x+b
本例咱们将经过代码来生成一我的工数据集。随机生成一个近似采样随机分布,使得w=2.0,b=1,并加入一个噪声,噪声的最大振幅为0.4。即方程表示为:session
y=2.0*x+1
%matplotlib inline import matplotlib.pyplot as plt import numpy as np import tensorflow as tf # 设置随机数种子 np.random.seed(5) #采用np生成等差数列,生成100个点,每一个点取值在-1到1之间 x_data = np.linspace(-1,1,100) # y=2x+1,其中,噪声的维度与x_data一致 y_data = 2*x_data + 1.0 + np.random.randn(*x_data.shape)*0.4 #画出随机生成的数据散点图 plt.scatter(x_data,y_data) #画出咱们想要学习的线性函数y=2x+1 plt.plot(x_data, 2*x_data+1.0, color='red',linewidth=3)
首先定义训练数据的占位符,x 是特征值,y 是标签值dom
x = tf.placeholder("float",name="x") y = tf.placeholder("float",name="y")
定义模型函数机器学习
def model(x,w,b): return tf.multiply(x,w) + b
定义模型结构,建立变量ide
#构建线性函数斜率,变量w w = tf.Variable(1.0,name="w0") #构建线性函数截距,变量b b = tf.Variable(0.0,name="b0") #pred是预测值,前向计算 pred = model(x,w,b)
设置训练参数函数
#迭代次数 train_epochs = 10 #学习率 learning_rate = 0.05
损失函数用于描述预测值与真实值之间的偏差,从而指导模型的收敛方向学习
#采用均方差做为损失函数 loss_function = tf.reduce_mean(tf.square(y-pred))
定义优化器,初始化一个 GradientDescentOptimizer
设置学习率和优化目标:最小化损失优化
#梯度降低优化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
声明会话spa
sess = tf.Session()
变量初始化
init = tf.global_variables_initializer() sess.run(init)
模型训练阶段,设置迭代次数,每次经过将样本逐个输入模型,进行梯度降低优化操做,每轮迭代后,绘制出模型曲线
#开始训练,轮数为epoch,采用SGD随机梯度降低方法
for epoch in range(train_epochs): for xs,ys in zip(x_data,y_data): _,loss = sess.run([optimzer.loss_function],feed_dict={x:xs,y:ys}) b0temp = b.eval(session=sess) w0temp = w.eval(session=sess) plt.plot(x_data,w0temp*x_data+b0temp)
从图中能够看出,该例子所拟合的模型较简单,训练 3 次之后已经接近收敛。对于复杂的模型须要更屡次的训练才能收敛。
plt.scatter(x_data,y_data,label='Original data') plt.plot(x_data,x_data*sess.run(w)+sess.runn(b),label='Fitted line',color='r')
打印结果
print("w: ",sess.run(w)) # w应该在2附近 print("b: ",sess.run(b)) # b应该在1附近
w:1.90116
b:1.02581
注意:数据每次运行均可能有所不一样。
x_test = 3.21 predict = sess.run(pred,feed_dict={x:x_test}) print("预测值:%f" % predict) target = 2*x_test + 1.0 print("目标值:%f" % target)
预测值:7.128515
目标值:7.420000
采用 TensorFlow 进行算法设计与训练的核心步骤为:
---------End---------
关注后回复“w”,加我私人微信
推荐阅读:
阅读是投资本身最有效的方式
自律是一种觉醒