Python | 高斯分布拟合示例

什么是正态分布或高斯分布?

当我们绘制一个数据集(如直方图)时,图表的形状就是我们所说的分布。最常见的连续值形状是钟形曲线,也称为高斯分布或正态分布。
它以德国数学家卡尔·弗里德里希·高斯的名字命名。遵循高斯分布的一些常见示例数据集是体温、人的身高、汽车里程、IQ分数。
让我们尝试生成理想的正态分布,并使用Python绘制它。

如何在Python中绘制高斯分布

我们有像Numpy、scipy和matplotlib这样的库来帮助我们绘制理想的正态曲线。

import numpy as np
import scipy as sp
from scipy import stats
import matplotlib.pyplot as plt## generate the data and plot it for an ideal normal curve## x-axis for the plot
x_data = np.arange(-5, 5, 0.001)## y-axis as the gaussian
y_data = stats.norm.pdf(x_data, 0, 1)## plot data
plt.plot(x_data, y_data)

输出
在这里插入图片描述
x轴上的点是观测值,y轴是每个观测值的似然性。
我们使用np.arange()在范围(-5,5)内生成规则间隔的观测值。然后我们通过norm.pdf()函数运行它,平均值为0.0,标准差为1,它返回该观察的可能性。0附近的观测值是最常见的,而-5.0和5.0附近的观测值是罕见的。pdf()函数的技术术语是概率密度函数。

高斯函数

首先,让我们将数据拟合到高斯函数。我们的目标是找到最适合我们数据的A和B的值。首先,我们需要为高斯函数方程编写一个Python函数。该函数应该接受自变量(x值)和所有构成它的参数。

#Define the Gaussian function
def gauss(x, H, A, x0, sigma):return H + A * np.exp(-(x - x0) ** 2 / (2 * sigma ** 2))

我们将使用python模块scipy.optimize中的函数curve_fit来拟合我们的数据。它使用非线性最小二乘法将数据拟合为函数形式。您可以通过使用Jupyter notebook或scipy在线文档中的help函数了解有关curve_fit的更多信息。

curve_fit函数有三个必需的输入:要拟合的函数、x数据和要拟合的y数据。有两个输出:第一个是参数的最优值的数组,第二个是参数的估计协方差矩阵,您可以从中计算参数的标准误差。

示例1:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
xdata = [ -10.0, -9.0, -8.0, -7.0, -6.0, -5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
ydata = [1.2, 4.2, 6.7, 8.3, 10.6, 11.7, 13.5, 14.5, 15.7, 16.1, 16.6, 16.0, 15.4, 14.4, 14.2, 12.7, 10.3, 8.6, 6.1, 3.9, 2.1]# Recast xdata and ydata into numpy arrays so we can use their handy features
xdata = np.asarray(xdata)
ydata = np.asarray(ydata)
plt.plot(xdata, ydata, 'o')# Define the Gaussian function
def Gauss(x, A, B):y = A*np.exp(-1*B*x**2)return y
parameters, covariance = curve_fit(Gauss, xdata, ydata)fit_A = parameters[0]
fit_B = parameters[1]fit_y = Gauss(xdata, fit_A, fit_B)
plt.plot(xdata, ydata, 'o', label='data')
plt.plot(xdata, fit_y, '-', label='fit')
plt.legend()

输出
在这里插入图片描述

示例2:

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as mpl# Let's create a function to model and create data
def func(x, a, x0, sigma):return a*np.exp(-(x-x0)**2/(2*sigma**2))# Generating clean data
x = np.linspace(0, 10, 100)
y = func(x, 1, 5, 2)# Adding noise to the data
yn = y + 0.2 * np.random.normal(size=len(x))# Plot out the current state of the data and model
fig = mpl.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, c='k', label='Function')
ax.scatter(x, yn)# Executing curve_fit on noisy data
popt, pcov = curve_fit(func, x, yn)#popt returns the best fit values for parameters of the given model (func)
print (popt)ym = func(x, popt[0], popt[1], popt[2])
ax.plot(x, ym, c='r', label='Best fit')
ax.legend()
fig.savefig('model_fit.png')

输出
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法通关村第十二关—字符串转换(青铜)

一、转换成小写字母 LeetCode709.给你一个字符串s,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例1: 输入:s"Hello" 输出:"hello" 示例2: 输入:s&qu…

C语言——输出魔方阵

目录 一、前言: 二、算法设计: 三、代码实现: 五、效果展示: 一、前言: 魔方矩阵又称幻方,是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵。魔方矩阵中的每个元素不能相同。你…

外包干了4个月,测试技术退步明显

先说一下自己的情况,本科生,20年通过校招进入杭州某软件公司,干了3年的功能测试,当然有半年是被封在了家里,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我…

牛客网BC107矩阵转置

答案&#xff1a; #include <stdio.h> int main() {int n0, m0,i0,j0,a0,b0;int arr1[10][10]{0},arr2[10][10]{0}; //第一个数组用来储存原矩阵&#xff0c;第二个数组用来储存转置矩阵scanf("%d%d",&n,&m); if((n>1&&n<10)&&am…

jmeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

RocketMQ源码 Broker-TopicConfigManager 元数据管理组件源码分析

前言 ConsumerOffsetManager负责管理Broker端的topicConfig元数据信息&#xff0c;它继承了ConfigManager组件&#xff0c;且定时将内存中维护的topic元数据信息&#xff0c;注册到远程NameServer集群&#xff0c;并持久化到磁盘文件。 源码版本&#xff1a;4.9.3 源码架构图…

12.15

写这段代码改了好几个小时&#xff0c;从有这个想法到完成花费了比较久的时间&#xff0c;也很有成就感。速成课给的伪代码思路漏掉了需要判断最小数是否正好是这个数本身这个条件&#xff0c;所以一直报错。所以写代码要把每种可能性都涵盖&#xff0c;不然程序就会出问题。之…

【渗透测试】常用的8种火狐插件

1、Max HacKBar 推荐理由&#xff1a;免费的hackbar插件&#xff0c;可快速使用SQL注入、XSS和Bypass等payload进行测试&#xff0c;可进行多种编码和解码&#xff0c;安装后F12即可使用。 2、FoxyProxy Standard 推荐理由&#xff1a;FoxyProxy是一个高级的代理管理工具&am…

jmeter,csv文件参数化+断言 实现一个接口的case

1、case 及其 测试数据 注意保存文件的编码格式 id,name,limit,status,address,start_time,assert_status,assert_message 100,小米100,1000,1,某某会展中心101,2023-8-20 14:20,200,add event success ,,,,,,10021,parameter error 100,小米102,1002,1,某某会展中心103,2023-…

十五、YARN辅助架构

1、学习内容 &#xff08;1&#xff09;了解什么是代理服务器 &#xff08;2&#xff09;了解什么是历史服务器 2、辅助架构 &#xff08;1&#xff09;辅助架构的由来 对于YARN架构来讲&#xff0c;除了ResourceManager集群资源总管家、NodeManager单机资源管家两个核心角…

AI日报:谷歌Gemini Pro即将面向企业和开发者

文章目录 总览Gemini介绍 模型能力产品API其他产品Imagen2和其他新闻Duet AI 总览 现在&#xff0c;您可以免费访问Gemini Pro的API&#xff0c;这是谷歌最新大型语言模型的第一个版本。 Gemini 介绍 谷歌通过其API让企业和开发者第一次看到了其最强大的大型语言模型Gemini。…

后端项目操作数据库-中枢组件Service调用Mapper实现增删改查-实例

接上篇 使用MyBatis配置Mapper实现增删改查 1.Service的基本作用 Service在代码中的的作用是调用Mapper、被Controller调用。是后端项目中非常重要的组件。 用于设计业务流程、业务逻辑&#xff0c;以保障数据的完整性、有效性、安全性。 2. Service使用举例——“添加相册”…

C++/语法@初始化列表

目录 初始化列表特征疑惑区别必在初始化列表中初始化的三种成员变量1、引用成员变量程序例子&#xff1a;运行结果&#xff1a; 2、const成员变量程序例子&#xff1a;运行结果&#xff1a; 3、自定义类型成员&#xff08;没有默认构造函数的类&#xff09;程序例子&#xff1a…

mysql:通过INFORMATION_SCHEMA数据库查询表的元信息

使用SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA database_name AND TABLE_NAME table_name;查询某个表的元信息。其中database_name替换为数据库名称&#xff0c;table_name替换为表的名称。 例如&#xff0c;下面语句&#xff0c;查询development数据库中…

Mirrors and reflections for VR

专为虚拟现实而建,但也非常适合非虚拟现实桌面和移动项目 这是URP管道,从Unity2019.4.16一直测试到2023年。 完全工作场景预览,轻松修改着色器材质。着色器支持折射,可以制作很酷的效果。 镜子/反射可以互相反射,而不仅仅是2...想象一下一个电梯,3面镜子都互相反射,直到…

阿木实验室普罗米修斯项目环境配置

引言 普罗米修斯项目其实只是个大ROS功能包&#xff0c; 里面每个模块就是每个ROS功能包&#xff0c;比如控制模块&#xff0c;视觉模块等等。对PX4配置的与这个一样&#xff0c;另外他是使用自己的P系列无人机&#xff08;我个人是&#xff30;450&#xff09;&#xff0c;所…

腾讯科技Hi Tech Day暨2023数字开物大会:智能涌现将通往无数的未来

腾讯科技讯 12月14日&#xff0c;以“智能涌现 数开万物”为主题的腾讯科技Hi Tech Day暨2023数字开物大会在北京国家会议中心召开&#xff0c;腾讯科技邀请知名院士、知名经济学家、知名大学教授、研究院院长、产业大咖、互联网大厂高管、知名科技领域头部企业高管、产业数字化…

vscode创建代码片段 vue3modal

{// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope// is left empty or omitte…

干货:企业如何讲好品牌故事

品牌故事讲得好&#xff0c;不仅能够体现品牌特色还能向消费者传递品牌精神的重要工具&#xff0c;优秀的品牌故事能够促进产品销量&#xff0c;为品牌带来曝光率&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;如何讲好品牌故事。 一、 品类历史和故事 品牌虽然是新品牌…

平面腔体谐振计算与仿真

PCB的电源网络是由电介质材料隔开的两个平行金属板所组成&#xff0c;可以通过以下的3种方法对其谐振模式进行分析&#xff1a; 1. 基于腔体模型的计算&#xff1b; 2. 基于SPICE等效电路&#xff1b; 3. 基于全波数值电磁算法的3D模型。 设计得当的前提下&#xff0c;上述3种方…