我是靠谱客的博主 风中铅笔,最近开发中收集的这篇文章主要介绍实验一:生成正态分布的数据作为线性回归图像的噪声,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2018/09/29

这部分的代码在
/root/OldFile/sklearn/linear_regression下,名字为lr_normal_noise.py。

我感觉这里的一个困难是我对这个库的API不够熟悉导致的。另一方面,也是对原来的那些个分布不理解导致的。
想生成的图是这个样子的。

正态分布的图

结果弄成的图是这样的,
程序的图

不知道是我API调错了,还是说哪里弄错了。(这里是对正态分布的形式弄错了,可以从实验三中看出
代码是这样的。

1 #! /usr/bin/python                                                                                            
  2 #coding:utf-8
  3 #2018/09/29
  4 #Author:VChao
  5 
  6 import os
  7 import matplotlib
  8 matplotlib.use('Agg')
  9 import matplotlib.pyplot as plt
 10 import numpy as np
 11 from scipy import stats
 12 
 13 
 14 
 15 def PlotMy(data):
 16     Filename = 'Myfig.png'
 17     plt.plot(data[:,0],data[:,1],'ro')
 18     plt.plot(data[:,1],data[:,0],'bo')
 19     plt.savefig(Filename)
 20 
 21 def main():
 22     x = np.arange(-3,3,0.2)
 23     y = x * 3 + 2 +  np.randmo.rand * stats.norm.pdf(x,0,1) 
 24     plt.scatter(x,y)
 25     plt.savefig("test.png")
 26 
 27 
 28     os.system("sz test.png")
 29 
 31 
 32 if __name__ == "__main__":
 33     main()

我本意是想生成,正态分布的,均值为0的数据,然后作为噪声来进行拟合。
我感觉这里是用的这个API错了,这个API是生成概率密度函数的,所以导致最后的结果就是不对了。
从整体上来看,最后如果是我弄的话,最后生成的这个散点图,还是一个正态分布的函数,最后的数据还是不对的,也就是说,还是不对的。


看了另外的一个博客,https://blog.csdn.net/qq_25420115/article/details/52822584?locationNum=16&fps=1
这个我不知道是不是对的,就是他的这个噪声真的是正态分布吗??不明白。

增加高斯噪声

代码如下:

23 def main():
 24     x = np.arange(-3,3,0.1)
 25     y = x * 3 + 2
 26     for i in range(x.size):
 27         y[i] =    random.gauss(0,12)
 28     plt.scatter(x,y)
 29     plt.savefig("test.png")

这里我觉得有点不对的地方,就是他增加高斯噪声的过程,因为这样弄得就是这个高斯噪声是完全不想关的。
就比如说,你看这个地方,你怎么说你这个东西的均值就是0呢。


看了这个东西:https://blog.csdn.net/ikerpeng/article/details/20703851
最后还是利用了np的库,就是

23 def main():
 24     x = np.arange(-3,3,0.06)
 25     y = x * 3 + 2
 26     y += np.random.normal(0,2,100)
 27     plt.scatter(x,y)
 28     plt.savefig("test.png")
 29 
 30 
 31     os.system("sz test.png")

效果图是这样的,


期望的样本图

我感觉还是什么地方没有弄好,就是没有真正搞清楚自己是怎么弄得。
就是,概率密度函数和真正的分布还是有差别的。因为我想要的就是随机的几个值。
不对不对,还是需要梳理一下。

下面这个图是我画出来的一个纯粹是正态分布的图,1000个点,就是纯粹的这个模拟函数生成的数。

正态分布

从这里可以看出来,就是说,他并不是我想象中的那样,真的成一个正态分布的曲线。
由此我也想起来了,当时说的那个大数定律。
也就是说,概率性的东西,和我真实的这个理解还是有偏差的。
(这个后续在分析)
那为什么,前面的那个,按照每一个坐标点加上的正态数不对,我猜可能是因为他们不是同一个分布产生的,毕竟调用了这么多次的随机函数。


其实这个就是一个鸿沟,就是概率密度函数,和真实的数据分布这一块,这之间的关系,怎么用概率论的理论来解释。

最后

以上就是风中铅笔为你收集整理的实验一:生成正态分布的数据作为线性回归图像的噪声的全部内容,希望文章能够帮你解决实验一:生成正态分布的数据作为线性回归图像的噪声所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部