sherry颖 2020-03-03
最近学习机器学习(和深度学习),入门第一个接触的便是简单线性回归。
所谓线性回归,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。其形式可表示为:y = w1x1 + w2x2 + w3x3 + ... + w_nx_n + b
而简单线性回归,是其最简单的形式:y = wx + b,即我们所熟知的一次函数,理解为给定权重w和偏置(或称为截距)b,结果y随变量x的变化而变化。
机器学习中的简单线性回归,个人理解为给定一系列的x值和对应的y值,来确定权重w和偏置b的合理值(即根据某种方法,从数据中找规律)。
具体步骤可大致分为:
以给定的每天来咖啡店人数(个)和咖啡店销售额(元)数据,来实现机器学习中的简单线性回归。
import tensorflow as tf LEARNING_RATE = 0.1 #创建100条身高与体重数据,假设身高与体重真实关系为:y_real=0.7x + 0.8 with tf.variable_scope( ‘Input_Data‘ ): x_data = tf.random_normal( [100, 1], mean=1.75, stddev=0.5, name=‘x_data‘ ) y_real = tf.matmul( x_data, [[0.7]] ) + 0.8 #创建模型:定义权重、偏置和预测结果表达式 with tf.variable_scope( ‘Model‘ ): weight = tf.Variable( tf.random_normal( [1, 1], mean=0.0, stddev=0.1 ), name=‘weight‘ ) bias = tf.Variable( 0.0, name=‘bias‘ ) y_predict = tf.matmul( x_data, weight ) + bias #定义损失函数和优化器(使用梯度下降法) with tf.variable_scope( ‘Optimizer‘ ): loss = tf.reduce_mean( tf.square( y_predict - y_real ) ) train_op = tf.train.GradientDescentOptimizer( LEARNING_RATE ).minimize( loss ) #创建tensorflow会话,训练模型 with tf.Session() as sess: #初始化变量 init_op = tf.global_variables_initializer() sess.run( init_op ) #写events文件,可使用tensorboard查看 tf.summary.FileWriter( ‘D:/Mine.py/‘, sess.graph ) #进行训练 for step in range( 1, 1001 ): sess.run( train_op ) if step % 100 == 0: print( ‘after{}step, weight={}, bias={}, loss={}‘ .format( step, sess.run( weight ), sess.run( bias ) , sess.run( loss ) ) )
训练结果如下: