1.涉及公式

1.1 高斯分布公式

概率密度函数

1.2 二项分布公式

换句话说,一枚公平的硬币有正面结果的概率(正面)p = 0.5。如果你掷硬币 20 次,平均值为 20 * 0.5 = 10;你会期望得到10个正面

1.3 方差

继续以硬币为例,n 是投掷硬币的次数,p 是正面朝上的概率

1.4 标准差

换句话说,标准差是方差的平方根。

1.5 概率密度函数

2.编写高斯类

import math
import matplotlib.pyplot as pltclass Gaussian():""" 高斯分布类,用于计算和可视化高斯分布.Attributes:均值(float),表示分布的均值。stdev(float)表示分布数据的标准偏差。_ list(float列表):从数据文件中提取的浮点列表"""def __init__(self, mu = 0, sigma = 1):self.mean = muself.stdev = sigmaself.data = []def calculate_mean(self):"""函数计算数据集的平均值.Args: NoneReturns: float: mean of the data set"""avg = 1.0 * sum(self.data) / len(self.data)self.mean = avgreturn self.meandef calculate_stdev(self, sample=True):"""函数计算数据集的标准偏差.Args: sample (bool): 数据是代表样本还是总体Returns: float: 数据集的标准偏差"""if sample:n = len(self.data) - 1else:n = len(self.data)mean = self.meansigma = 0for d in self.data:sigma += (d - mean) ** 2sigma = math.sqrt(sigma / n)self.stdev = sigmareturn self.stdevdef read_data_file(self, file_name, sample=True):"""函数从txt文件读入数据。txt文件应该具有每行一个数字(浮动)。这些数字存储在数据属性中。读取文件后,计算平均值和标准偏差Args:file_name (string): name of a file to read fromReturns:None"""with open(file_name) as file:data_list = []line = file.readline()while line:data_list.append(int(line))line = file.readline()file.close()self.data = data_listself.mean = self.calculate_mean()self.stdev = self.calculate_stdev(sample)def plot_histogram(self):"""函数使用matplotlib pyplot库输出实例变量数据的直方图.Args:NoneReturns:None"""plt.hist(self.data)plt.title('Histogram of Data')plt.xlabel('data')plt.ylabel('count')def pdf(self, x):"""高斯分布的概率密度函数计算器.Args:x (float): 计算概率密度函数的点Returns:float: 输出的概率密度函数"""return (1.0 / (self.stdev * math.sqrt(2*math.pi))) * math.exp(-0.5*((x - self.mean) / self.stdev) ** 2)def plot_histogram_pdf(self, n_spaces = 50):"""函数绘制数据的归一化直方图,并沿相同范围绘制概率密度函数Args:n_spaces (int): number of data points Returns:list: x values for the pdf plotlist: y values for the pdf plot"""mu = self.meansigma = self.stdevmin_range = min(self.data)max_range = max(self.data)# 计算x值之间的间隔interval = 1.0 * (max_range - min_range) / n_spacesx = []y = []# calculate the x values to visualizefor i in range(n_spaces):tmp = min_range + interval*ix.append(tmp)y.append(self.pdf(tmp))# make the plotsfig, axes = plt.subplots(2,sharex=True)fig.subplots_adjust(hspace=.5)axes[0].hist(self.data, density=True)axes[0].set_title('Normed Histogram of Data')axes[0].set_ylabel('Density')axes[1].plot(x, y)axes[1].set_title('Normal Distribution for \n Sample Mean and Sample Standard Deviation')axes[0].set_ylabel('Density')plt.show()return x, y

3.测试高斯类

import unittestclass TestGaussianClass(unittest.TestCase):def setUp(self):self.gaussian = Gaussian(25, 2)def test_initialization(self): self.assertEqual(self.gaussian.mean, 25, 'incorrect mean')self.assertEqual(self.gaussian.stdev, 2, 'incorrect standard deviation')def test_pdf(self):self.assertEqual(round(self.gaussian.pdf(25), 5), 0.19947,\'pdf function does not give expected result') def test_meancalculation(self):self.gaussian.read_data_file('numbers.txt', True)self.assertEqual(self.gaussian.calculate_mean(),\sum(self.gaussian.data) / float(len(self.gaussian.data)), 'calculated mean not as expected')def test_stdevcalculation(self):self.gaussian.read_data_file('numbers.txt', True)self.assertEqual(round(self.gaussian.stdev, 2), 92.87, 'sample standard deviation incorrect')self.gaussian.read_data_file('numbers.txt', False)self.assertEqual(round(self.gaussian.stdev, 2), 88.55, 'population standard deviation incorrect')tests = TestGaussianClass()tests_loaded = unittest.TestLoader().loadTestsFromModule(tests)unittest.TextTestRunner().run(tests_loaded)

python3 高斯函数相关推荐

  1. 使用二维高斯函数模糊图片

    这篇文章以通俗易懂的语言和方式解释了如何使用高斯函数模糊一张图片. 1.一维高斯函数: a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下: 2.根据一维高斯函数 ...

  2. Python3 range()函数

    Python3 range() 函数用法  Python3 内置函数 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表. Pyth ...

  3. 随机过程:高斯函数导数、梯度

    一.说明 高斯函数广泛应用于统计学领域,随机过程,谱分析等.在信号处理领域,用于定义高斯滤波器,在图像处理领域,二维高斯核函数常用于高斯模糊Gaussian Blur,在数理方程领域,主要是用于解决热 ...

  4. python高斯函数表达式_Python实现高斯函数的三维显示方法

    在网上查阅资料,发现很少用python进行高斯函数的三维显示绘图的,原因可能是其图形显示太过怪异,没有matlab精细和直观. 回顾一下二维高斯公式: σ此处取3. 在matlab下的程序为: u=[ ...

  5. matlab 高斯函数_光学与matlab:高斯光的模拟

    光学与matlab:高斯光的模拟 高斯光束,自然何为高斯光束?百度了一下,如下所示,"通常情形,激光谐振腔发出的基模辐射场,其横截面的振幅分布遵守高斯函数,故称高斯光束."如果您对 ...

  6. python3主函数返回值_Python3

    Python3 round() 函数 描述 round() 方法返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入). 精度要求高的,不建议使用该函数. 语法 以下是 r ...

  7. Python3 hex() 函数

    Python3 hex() 函数  Python3 内置函数 描述 hex() 函数用于将一个指定数字转换为 16 进制数. 语法 hex 语法: hex(x) 参数说明: x -- 一个整数 返回值 ...

  8. 再谈正态分布或高斯函数

    它的历史不知道,如何推导出来的,没管啊,不过我很有兴趣看看啊,但没有看.高斯函数的用处太多了: 首先说明一点哦:正态分布是高斯函数的积分为1的情况: 一维情况下: 一维高斯高斯函数的公式: 而正态分布 ...

  9. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数

    二维高斯函数 高斯函数在图像滤波.边缘检测等中发挥着重要的作用.高斯滤波是典型的低通滤波,对图像有平滑作用.同时,高斯函数的一阶.二阶导数也可以用于高通滤波,比如canny算子中用到的是高斯函数的一阶 ...

最新文章

  1. linux、sql 常用的一些特殊符号
  2. 运维请注意:”非常危险“的Linux命令大全
  3. 【翻译】asp.net core中使用MediatR
  4. 判断深度学习模型的稳定性_问题引领构建数学模型,讲练结合促进深度学习
  5. dpkg status database is locked by another process
  6. Python编程基础11:字典
  7. 4.FreeRTOS学习笔记-消息队列
  8. 和 Pipelining 说再见,cURL 放弃使用管道技术
  9. java ssm 增删改查,Maven+SSM框架实现简单的增删改查
  10. 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
  11. Python爬虫实战四之抓取淘宝MM照片
  12. 透视矩阵的推导(最直观、最深入、最还原,看完请点赞。)
  13. 前端关于Recat面试题(九)
  14. 全新版大学进阶英语综合教程 第2册 课后习题答案
  15. JUnit:求求你了,别再用 main 方法测试了,好吗?
  16. UG NX二次开发(C#)- 查询part历史信息
  17. 几何代数(Geometric Algebra)
  18. JavaScript - URI编码、解码,转换整型的使用说明
  19. android 两种颜色融合,Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合
  20. Framework学习之路(一)—— UI绘制深入源码分析

热门文章

  1. java.lang.NoClassDefFoundError: com/fasterxml/classmate/TypeResolver
  2. LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc120-mt-sgd-1_63.lib'
  3. dts、dws文件介绍
  4. Kindle Touch 看pdf格式书籍
  5. 在kindle阅读PDF的较好的解决方法
  6. 面试时,我说谎了……
  7. visio流程图带公式变模糊 已解决
  8. 【微服务与触发器 一】微服务的前世今生
  9. 链路技术--Smart Link、Monitor Link
  10. CICS(cics路况快速检测系统)