注意本篇讲的是如何用一堆离散数据点拟合出高斯模型,而非已知一堆数据点对求解高斯函数。

拟合单高斯模型(正态分布)

若你有一堆离散数据点,想拟合出其高斯分布。实际上只需要求其均值和标准差。

为了好看一点,可以再先出其直方图。一般用plt.hist来画直方图。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import math
import matplotlib.mlab as mlab
from scipy.stats import normx = np.array(yourlist) 这里填入你的数据list 如果已经是array格式就不用转化了
#n, bins, patches = plt.hist(x, 20, density=1, facecolor='blue', alpha=0.75)  #第二个参数是直方图柱子的数量
mu =np.mean(x) #计算均值
sigma =np.std(x)
num_bins = 30 #直方图柱子的数量
n, bins, patches = plt.hist(x, num_bins,density=1, alpha=0.75)
#直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象
y = norm.pdf(bins, mu, sigma)#拟合一条最佳正态分布曲线y plt.grid(True)
plt.plot(bins, y, 'r--') #绘制y的曲线
plt.xlabel('values') #绘制x轴
plt.ylabel('Probability') #绘制y轴
plt.title('Histogram : $\mu$=' + str(round(mu,2)) + ' $\sigma=$'+str(round(sigma,2)))  #中文标题 u'xxx'
#plt.subplots_adjust(left=0.15)#左边距
plt.show()

结果:

得到单高斯分布后就可以分析概率。

更多画法,参考:《用Python为直方图绘制拟合正态分布曲线的两种方法》

sigma原则

1sigma原则:数值分布在(μ-σ,μ+σ)中的概率为0.6526;

2sigma原则:数值分布在(μ-2σ,μ+2σ)中的概率为0.9544;

3sigma原则:数值分布在(μ-3σ,μ+3σ)中的概率为0.9974;

由于“小概率事件”和假设检验的基本思想 “小概率事件”通常指发生的概率小于5%的事件,认为在一次试验中该事件是几乎不可能发生的。由此可见X落在(μ-3σ,μ+3σ)以外的概率小于千分之三,在实际问题中常认为相应的事件是不会发生的,基本上可以把区间(μ-3σ,μ+3σ)看作是随机变量X实际可能的取值区间,这称之为正态分布的“3σ”原则。

拟合多元高斯分布(高斯混合模型)

用curve_fit!先import:

from scipy.optimize import curve_fit

以三高斯拟合为例,首先先定义高斯拟合函数方程式:

def func3(x,a1,a2,a3,m1,m2,m3,s1,s2,s3):return a1*np.exp(-((x-m1)/s1)**2)+a2*np.exp(-((x-m2)/s2)**2)+a3*np.exp(-((x-m3)/s3)**2)

拟合,并对参数进行限制,bounds里面代表参数上下限,参数即为def func3里面x之后的所有参数:

popt, pcov = curve_fit(func3, x, y, bounds=([y0,y0,y0,-5000,-1000,500,1200,1200,1200], [y_max,y_max,y_max,-500,1000,5000,30000,30000,30000]))

这个含义是a1、a2、a3最小值为y0,最大值为y_max,m1、最小值为-5000,最大值为-500,以此类推。

如图所示为拟合出的一个多高斯拟合,这里含有将近10个高斯函数。

再来一个完整的二元高斯分布的拟合的例子:

import numpy as np
import pylab as plt
#import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
#from scipy import asarray as ar,expx = ar(range(10))
y = ar([0,1,2,3,4,5,4,3,2,1])def gaussian(x,*param):return param[0]*np.exp(-np.power(x - param[2], 2.) / (2 * np.power(param[4], 2.)))+\param[1]*np.exp(-np.power(x - param[3], 2.) / (2 * np.power(param[5], 2.)))popt,pcov = curve_fit(gaussian,x,y,p0=[3,4,3,6,1,1])
print(popt)
print(pcov)plt.plot(x,y,'b+:',label='data')
plt.plot(x,gaussian(x,*popt),'ro:',label='fit')
plt.legend()
plt.show()

python:拟合高斯模型相关推荐

  1. python拟合sir模型_Python—拟合模型

    在很多情况下,大家的工作会遇到y数据与x数据存在相关性,但无法知道y与x是那种相关,需要具体知道两者关系,我们可以用拟合模型来完成这个事情. 1:随机源数据 很多初学者想动手尝试的时候,苦于无源数据, ...

  2. python直线拟合_RANSAC算法详解(附Python拟合直线模型代码)

    之前只是简单了解RANSAC模型,知道它是干什么的.然后今天有个课程设计的报告,上去讲了一下RANSAC,感觉这个东西也没那么复杂,所以今天就总结一些RASAC并用Python实现一下直线拟合. RA ...

  3. python拟合sir模型_SI,SIS,SIR模型的正确实现(python)

    我已经创建了上述模型的一些非常基本的实现.但是,尽管图表看起来看起来很正确,但这些数字并不等于常数.这是因为每个隔室中易感染/感染/恢复的人的总和应该总计为N(这是人的总数),但是由于某些原因,它加起 ...

  4. EM算法 估计混合高斯模型参数 Python实现

    EM算法 估计混合高斯模型参数 Python实现 EM算法是一种用来解决含有隐变量问题的算法,混合高斯模型中对于某个数据我们并不知道是来自于哪个模型,因此可以视为隐 变量,故可以采用隐含高斯模型来求解 ...

  5. python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...

    1 GMM基础 高斯混合模型(GMM)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况. 灵魂的拷问:为什么GMM可以拟合出 ...

  6. 高斯模型混合模型–理论上可以拟合任意概率密度分布

    高斯混合模型   给定变量 xxx 的有限个观测数据 x1,x2,x3,⋯,xnx_1,x_2,x_3,\cdots,x_nx1​,x2​,x3​,⋯,xn​,对变量 xxx 的概率分布 p(x)p( ...

  7. python opencv 背景建模 混合高斯模型

    本文转载自别人博客 混合高斯模型:在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应.然后在测试阶段,对新来的像素进行GMM匹配,如果 ...

  8. python拟合离散数据_Logit模型拟合实战案例(Python)——离散选择模型之六

    前言:本文详细介绍如何在Python中拟合Logit模型,包括数据准备.哑变量的处理.参数拟合结果解读等内容. 本文为系列离散选择模型(Discrete Choice Model, DCM)系列文章的 ...

  9. 【opencv】(11) 背景建模,帧差法、混合高斯模型,实战:行人检测,附python完整代码和数据集

    各位同学好,今天和大家分享一下opencv背景建模相关操作.主要介绍两种背景建模方法,帧差法和混合高斯模型. 案例简介:现有一份路口摄像机拍摄的行人流视频,通过背景建模方法,区分背景和前景,完成行人识 ...

最新文章

  1. 最新!2022中国大学校友会排名发布
  2. mybatis执行查询的所有分析和创建代理对象的分析
  3. Linux / 设置和查看环境变量的方法
  4. nvidia驱动崩了 ubuntu_Ubuntu 16.04安装nVidia驱动失败!
  5. python3 提取url中域名部分_python 从网址(url)中提取域名和path
  6. linux系统调用使用方法,Linux系统的使用以及系统调用的开发方法OS.ppt
  7. 低电阻、高散热、节省空间 工业设备就需要这样的小型DCDC转换器
  8. GaitSet:将步态作为序列的交叉视角步态识别
  9. 2021大学网课答案搜题公众号
  10. 瑜欣平瑞通过注册:年营收6.6亿 胡云平一家三口为实控人
  11. php curl post 很慢,php的curl函数模拟post数据提交,首次速度非常慢的处理办法 | 学步园...
  12. [经验教程]在拼多多上发起拼单和参与拼单有什么区别?
  13. cesium 直接加载 geotiff 影像图
  14. 计算机一级wps选择题必背知识点,2017全国计算机一级《WPS》复习题「附答案」...
  15. 六年级上册计算机知识点总结,六年级数学上册知识点的整理
  16. 计算机英语词汇频率统计,托福英语语法经典词汇与频率统计
  17. 【转】关于linux中wps出现系统字体缺失的解决方法
  18. 调LED大屏颜色方法
  19. 倍福PLC中的EtherCAT与E-Bus的关系
  20. JBuilder 2007 Enterprise Edition 王者归来

热门文章

  1. 单片机应用系统设计技术——独立式键盘及其工作原理
  2. AD20小笔记——如何导出元器件清单
  3. 2018年江苏省电信暑期实习生面经(虽然是失败的)18.6.24
  4. UCML工作流更改JS
  5. android 太阳系布局,布局神秘的“诸神之城” 对应着太阳系与天狼星
  6. 电脑待机死机或者彻底关闭win10的睡眠待机
  7. TWS 耳机十九大蓝牙主芯片公司!
  8. 网页设计浮动和定位小总结
  9. Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略
  10. 招标采购过程中如何防范招标风险?