用Python学线性代数:概率密度函数拟合
问题
如果有一组数据,如何确定他们来自哪个统计分布?
从数据分析的角度,我们并不想要通过严格的统计方法去找到这个分布,Python中有一个可以自动拟合数据分析的库 —— distfit 。这是一个python包,用于通过残差平方和(RSS)和拟合优度检验(GOF)对89个单变量分布进行概率密度拟合,并返回最佳分布。
distfit 简单又好用
# 安装
pip install distfit
distfit 常见的用法:
.fit_transform(): 在经验数据 X 上拟合分布
.summary:获得拟合数据(内部)并测试拟合优度的所有分布的摘要。
.predict():预测响应变量的概率
.model:输出分布的最佳参数
.plot(): 绘制最佳的拟合分布
示例
from distfit import distfit
import numpy as np
X = np.random.normal(0, 2, [100,10])
y = [-8,-6,0,1,2,3,4,5,6]
dist = distfit(todf=True)
dist.fit_transform(X)
dist.plot()
输出用于拟合过程的函数列表,它使用最流行的 10 个发行版的列表进行扫描。
[distfit] >[norm ] [0.00 sec] [RSS: 0.0120713] [loc=-0.047 scale=1.984]
[distfit] >[expon ] [0.0 sec] [RSS: 0.4092169] [loc=-7.320 scale=7.273]
[distfit] >[pareto ] [0.06 sec] [RSS: 0.4098607] [loc=-98251992.546 scale=98251985.226]
[distfit] >[dweibull ] [0.01 sec] [RSS: 0.0229391] [loc=-0.046 scale=1.721]
[distfit] >[t ] [0.04 sec] [RSS: 0.0120717] [loc=-0.047 scale=1.984]
[distfit] >[genextreme] [0.05 sec] [RSS: 0.0107445] [loc=-0.755 scale=1.981]
[distfit] >[gamma ] [0.04 sec] [RSS: 0.0118907] [loc=-191.812 scale=0.021]
[distfit] >[lognorm ] [0.09 sec] [RSS: 0.0117103] [loc=-107.148 scale=107.084]
[distfit] >[beta ] [0.03 sec] [RSS: 0.0116300] [loc=-14.479 scale=28.973]
[distfit] >[uniform ] [0.0 sec] [RSS: 0.2545746] [loc=-7.320 scale=12.835]
[distfit] >[loggamma ] [0.04 sec] [RSS: 0.0123738] [loc=-360.941 scale=54.518]
当然,distfit 支持的分布还有很多:

最后绘制最佳的拟合分布

dist.summary 输出各分布的参数。
distr score ... scale arg
0 genextreme 0.0107445 ... 1.9814 (0.27387377680364405,)
1 beta 0.01163 ... 28.9726 (26.055079164665887, 26.248878389403494)
2 lognorm 0.0117103 ... 107.084 (0.01848064379707136,)
3 gamma 0.0118907 ... 0.0205321 (9339.777394183824,)
4 norm 0.0120713 ... 1.98429 ()
5 t 0.0120717 ... 1.98428 (1863131.339823592,)
6 loggamma 0.0123738 ... 54.5178 (750.2645425001494,)
7 dweibull 0.0229391 ... 1.72129 (1.2898970802235787,)
8 uniform 0.254575 ... 12.8346 ()
9 expon 0.409217 ... 7.27316 ()
10 pareto 0.409861 ... 9.8252e+07 (13542571.060345018,)
用Python学线性代数:概率密度函数拟合的更多相关文章
- rvs产生服从指定分布的随机数 pdf概率密度函数 cdf累计分布函数 ppf 分位点函数
统计工作中几个常用用法在python统计函数库scipy.stats的使用范例. 正态分布以正态分布的常见需求为例了解scipy.stats的基本使用方法. 1.生成服从指定分布的随机数 norm.r ...
- 高斯分布(Gaussian Distribution)的概率密度函数(probability density function)
高斯分布(Gaussian Distribution)的概率密度函数(probability density function) 对应于numpy中: numpy.random.normal(loc= ...
- PDF的来源——概率密度函数
//首发于简书,详见原文:https://www.jianshu.com/p/6493edd20d61 你不会还真的以为这是一篇讲怎么做pdf文件,怎么编辑.保存.美化的文章吧? 咳咳,很遗憾告诉你不 ...
- Python学到什么程度就可以去找工作?掌握这4点足够了!
大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问 ...
- Python学到什么程度才可以去找工作?掌握这4点足够了!
大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...
- 《用 Python 学微积分》笔记 3
<用 Python 学微积分>原文见参考资料 1. 16.优化 用一个给定边长 4 的正方形来折一个没有盖的纸盒,设纸盒的底部边长为 l,则纸盒的高为 (4-l)/2,那么纸盒的体积为: ...
- 《用 Python 学微积分》笔记 2
<用 Python 学微积分>原文见参考资料 1. 13.大 O 记法 比较两个函数时,我们会想知道,随着输入值 x 的增长或减小,两个函数的输出值增长或减小的速度究竟谁快谁慢.通过绘制函 ...
- 《用 Python 学微积分》笔记 1
<用 Python 学微积分>原文见参考资料 1. 1.多项式 f(x)=x3-5x2+9 def f(x): return x**3 - 5*x**2 + 9 print f(3) pr ...
- 函数的光滑化或正则化 卷积 应用 两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积
http://graphics.stanford.edu/courses/cs178/applets/convolution.html Convolution is an operation on t ...
- 利用Python学习线性代数 -- 1.1 线性方程组
利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...
随机推荐
- GitHub 官方开源的字体集「GitHub 热点速览」
前几天 GitHub 官方一口气开源了 5 款字体,各有特色,彼此兼容,重要的是代码友好.这不,一开源就获得了 4.5k+ 的 star. 本周除了这个热点之外,当属 OpenAI 又有新动态了,你可 ...
- JS判断点是否在线段上
本文利用向量的点积和叉积来判断点是否在线段上. 基础知识补充 从零开始的高中数学--向量.向量的点积.带你一次搞懂点积(内积).叉积(外积).Unity游戏开发--向量运算(点乘和叉乘 说明 点积可以 ...
- 文心一言 VS 讯飞星火 VS chatgpt (141)-- 算法导论12.1 1题
一.用go语言,对于关键字集合(1,4,5,10,16,17,21),分别画出高度为 2.3.4.5和6的二又搜索树. 文心一言: 以下是用Go语言为给定的关键字集合(1, 4, 5, 10, 16, ...
- .NET领域性能最好的对象映射框架Mapster使用方法
Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射.在本文中,我将详细介绍如何在.NET中使用Mapster,并提供一些实例和源代码. 和其它框架性能对比: ...
- offline RL | IQL:通过 sarsa 式 Q 更新避免 unseen actions
题目:Offline Reinforcement Learning with Implicit Q-Learning,Sergey Levine 组,2022 ICLR,5 6 8. pdf 版本:h ...
- 【scipy 基础】--统计分布
scipy.stats子模块包含大量的概率分布.汇总和频率统计.相关函数和统计测试.掩蔽统计.核密度估计.准蒙特卡罗功能等等. 这个子模块可以帮助我们描述和分析数据,进行假设检验和拟合统计模型等. 1 ...
- Tomcat 配合虚拟线程,一种新的编程体验
Java 21 在今年早些时候的 9 月 19 日就正式发布,并开始正式引入虚拟线程,但是作为 Java 开发生态中老大哥 Spring 并没有立即跟进,而是在等待了两个月后的 11 月 29 日,伴 ...
- Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)
近日,Bert-vits2-v2.2如约更新,该新版本v2.2主要把Emotion 模型换用CLAP多模态模型,推理支持输入text prompt提示词和audio prompt提示语音来进行引导风格 ...
- CAP 8.0 版本发布通告 - CAP 7岁生日快乐!
前言 今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快 ...
- 5分钟攻略Spring-Retry框架实现经典重试场景
前言 今天分享干货,控制了篇幅,5分钟内就能看完学会. 主题是Spring-Retry框架的应用,做了一个很清晰的案例,代码可下载自测. 框架介绍 Spring-Retry框架是Spring自带的功能 ...