Tensorflow-线性回归

**

1、实现线性回归

**

#!/usr/bin/python3
# -*- coding:utf-8 -*-
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

"""
实现线性回归
"""

# 数据
train_x=np.random.random([100,1]).astype(np.float32)
train_y=3.*train_x+5.

x=tf.placeholder(tf.float32,[100,1],'x')
y_=tf.placeholder(tf.float32,[100,1],'y')

with tf.variable_scope('wb'):
    w=tf.get_variable('w',(1,1),dtype=tf.float32,initializer=tf.random_uniform_initializer)
    b=tf.Variable(0.0,dtype=tf.float32)


y=tf.add(tf.matmul(x,w),b)

# loss function
loss=tf.reduce_mean(tf.reduce_sum(tf.square(y-y_)))

train_op=tf.train.GradientDescentOptimizer(0.001).minimize(loss)

sess=tf.InteractiveSession(graph=tf.get_default_graph())

tf.global_variables_initializer().run()

for step in range(1000):
    sess.run(train_op,feed_dict={x:train_x,y_:train_y})
    if step%100==0:
        print('w',w.eval(),'b',b.eval())
a=w.eval()
b=b.eval()
plt.figure()
plt.scatter(train_x,train_y,s=30,c='red',marker='o',alpha=0.5,label='C1')

plt.plot(train_x,train_x*a+b)
plt.show()

sess.close()

这里写图片描述
这里写图片描述

2、数据中加入随机噪声

train_y=train_y+np.random.random([100,1])

结果:
这里写图片描述
这里写图片描述

可以看出随机噪声对其影响不大,其实随机误差对神经网络的影响不大,但系统误差对神经网络影响较大,因此在训练样本时都需要随机打乱样本

3、加入少量错误的样本

train_x=np.random.random([100,1]).astype(np.float32)
train_y=3.*train_x+5.
train_x1=np.random.random([10,1]).astype(np.float32)
train_y1=4.*train_x1+6.

train_x=np.vstack((train_x,train_x1))
train_y=np.vstack((train_y,train_y1))

结果:
这里写图片描述

这里写图片描述

从上面的结果可以看出,如果样本中存在错误的标签,而错误样本占总样本数比例很小,其影响可以忽略。
因此,在制作样本时,如果有少量样本贴错了标签,但占总样本数比例不大,其实是可以忽略,如果占的比重较大,就需要手工查找更正,或者增加更多的样本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值