问题

如果有一组数据,如何确定他们来自哪个统计分布?

从数据分析的角度,我们并不想要通过严格的统计方法去找到这个分布,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学线性代数:概率密度函数拟合的更多相关文章

  1. rvs产生服从指定分布的随机数 pdf概率密度函数 cdf累计分布函数 ppf 分位点函数

    统计工作中几个常用用法在python统计函数库scipy.stats的使用范例. 正态分布以正态分布的常见需求为例了解scipy.stats的基本使用方法. 1.生成服从指定分布的随机数 norm.r ...

  2. 高斯分布(Gaussian Distribution)的概率密度函数(probability density function)

    高斯分布(Gaussian Distribution)的概率密度函数(probability density function) 对应于numpy中: numpy.random.normal(loc= ...

  3. PDF的来源——概率密度函数

    //首发于简书,详见原文:https://www.jianshu.com/p/6493edd20d61 你不会还真的以为这是一篇讲怎么做pdf文件,怎么编辑.保存.美化的文章吧? 咳咳,很遗憾告诉你不 ...

  4. Python学到什么程度就可以去找工作?掌握这4点足够了!

    大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问 ...

  5. Python学到什么程度才可以去找工作?掌握这4点足够了!

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

  6. 《用 Python 学微积分》笔记 3

    <用 Python 学微积分>原文见参考资料 1. 16.优化 用一个给定边长 4 的正方形来折一个没有盖的纸盒,设纸盒的底部边长为 l,则纸盒的高为 (4-l)/2,那么纸盒的体积为: ...

  7. 《用 Python 学微积分》笔记 2

    <用 Python 学微积分>原文见参考资料 1. 13.大 O 记法 比较两个函数时,我们会想知道,随着输入值 x 的增长或减小,两个函数的输出值增长或减小的速度究竟谁快谁慢.通过绘制函 ...

  8. 《用 Python 学微积分》笔记 1

    <用 Python 学微积分>原文见参考资料 1. 1.多项式 f(x)=x3-5x2+9 def f(x): return x**3 - 5*x**2 + 9 print f(3) pr ...

  9. 函数的光滑化或正则化 卷积 应用 两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积

    http://graphics.stanford.edu/courses/cs178/applets/convolution.html Convolution is an operation on t ...

  10. 利用Python学习线性代数 -- 1.1 线性方程组

    利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...

随机推荐

  1. musl中strlen源码实现和分析

    最近在学习<C 和指针>的第 6 章指针部分,在 6.12 章节看到了 strlen 函数的实现,联想到最近有在看 musl 的源码,于是就把 musl 中 strlen 的源码认真地分析 ...

  2. [OpenWrt]软路由H28K开启USB无线教程

    0x01 背景 H28K软路由带了一个USB2.0的接口,官方说是支持USB无线的:于是就网购了USB转WIFI的设备(芯片:RTL8811CU),拿到手后开心的插上去,发现没有任何反应:在Q裙中询问 ...

  3. jdk所有版本-自留收藏

    链接:https://pan.baidu.com/s/1NDbEAEbKeh8xFzjEwB8aLg 提取码:0000

  4. 【Javaweb】html frame标签的使用 | 导航栏右侧内容的实现

    问题的产生: 是我和同伴做了一个导航栏,但是我们不知道怎么实现右侧内容的切换 然后我们查了很多资料,但是有一些是垂直的,但是就如图可见,我们是水平的,那么怎么实现水平切换呢? 上网看到了frame标签 ...

  5. 数据驱动决策,Datainside引领可视化报告新时代

    数据驱动决策已经成为当今社会中的重要趋势,而Datainside作为一家数据可视化报告平台,正引领着可视化报告的新时代.下面是关于Datainside平台的详细描述. 数据集成与连接 Datainsi ...

  6. NodeJS下载安装

    一.什么是NodeJS? NodeJS是一个开源,跨平台的JavaScript运行环境 二.NodeJS安装包下载 1.打开网址:Node.js (nodejs.org) 2.下载稳定版本 三.Nod ...

  7. Python 实现Word转HTML

    将Word转换为HTML能将文档内容发布在网页上,这样,用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件.Word转HTML对于在线发布信息.创建在线文档库以及构建交互式网页应用程序都非常有 ...

  8. 关于C#接口的用法详细解答,附上案例说明!

    接口 C#中的接口是一种定义了一组方法.属性和事件的类型.它只包含成员的声明,而不包含任何实现.接口可以被类通过实现的方式使用,从而使类能够具有接口定义的行为. 接口在C#中被定义为使用interfa ...

  9. 针对LocalDateTime日期格式化解决方案

    前两天做项目,后端返回给前端的数据中日期时间格式如下: 并不是我想要的yyyy-MM-dd HH:mm:ss格式的,所以网上搜了一下有一个JSON日期LocalDateTime序列化器(如果是Date ...

  10. 5分钟攻略Spring-Retry框架实现经典重试场景

    前言 今天分享干货,控制了篇幅,5分钟内就能看完学会. 主题是Spring-Retry框架的应用,做了一个很清晰的案例,代码可下载自测. 框架介绍 Spring-Retry框架是Spring自带的功能 ...