Python fitter包:拟合数据样本的分布

  • 安装fitter
  • Fitter方法参数详解
  • HistFit类:适合密度函数本身
  • Python拟合数据样本的分布

github项目:https://github.com/cokelaer/fitter

fittle 说明文档:
https://fitter.readthedocs.io/en/latest/references.html#

安装fitter

pip install fitter

生成一段模拟数据

from scipy import stats
data = stats.gamma.rvs(2, loc=1.5, scale=2, size=100000)

利用fitter拟合数据样本的分布

from fitter import Fitter
# may take some time since by default, all distributions are tried
# but you call manually provide a smaller set of distributions
f = Fitter(data, distributions=['gamma', 'rayleigh', 'uniform'])
f.fit()
f.summary()

以上输出为拟合的误差与拟合的概率密度曲线及数据的直方图。

Fitter方法参数详解

Fitter(data, xmin=None, xmax=None, bins=100, distributions=None, verbose=True, timeout=10)

参数:
data (list) –输入的样本数据;
xmin (float) – 如果为None,则使用数据最小值,否则将忽略小于xmin的数据;
xmax (float) – 如果为None,则使用数据最大值,否则将忽略大于xmin的数据;
bins (int) – 累积直方图的组数,默认=100;
distributions (list) – 给出要查看的分布列表。 如果没有,则尝试所有的scipy分布(80种),常用的分布distributions=[‘norm’,‘t’,‘laplace’,‘cauchy’, ‘chi2’,’ expon’, ‘exponpow’, ‘gamma’,’ lognorm’, ‘uniform’];
verbose (bool) –
timeout – 给定拟合分布的最长时间,(默认=10s) 如果达到超时,则跳过该分布。
Fitter返回

f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
f.df_errors #返回这些分布的拟合质量(均方根误差的和)
f.fitted_param #返回拟合分布的参数
f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
f.get_best(method='sumsquare_error') #返回最佳拟合分布及其参数
f.hist() #绘制组数=bins的标准化直方图
f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数

一旦执行了拟合,就可能想要获得与最佳分布相对应的参数。参数存储在中fitted_param。例如,在上面的示例中,摘要告诉我们Gamma分布最适合。您将按以下方式检索Gamma分布的参数:

>>> f.fitted_param['gamma']
(1.9870244799532322, 1.5026555566189543, 2.0174462493492964)

在这里,您将需要查看scipy文档以找出那些参数(均值,sigma,shape等)。为了方便起见,我们提供相应的PDF:

f.fitted_pdf['gamma']

但您可能想自己绘制伽马分布。在这种情况下,您将需要使用Scipy软件包本身。这是一个例子

from pylab import linspace, plot
import scipy.statsdist = scipy.stats.gamma
param = (1.9870, 1.5026, 2.0174)
X = linspace(0,10, 10)
pdf_fitted = dist.pdf(X, *param)
plot(X, pdf_fitted, 'o-')

https://www.freesion.com/article/9309375330/

HistFit类:适合密度函数本身

有时,您只有发行版本身。例如:

import scipy.stats
data = [scipy.stats.norm.rvs(2,3.4) for x in  range(10000)]
Y, X, _ = hist(data, bins=30)

在这里,我们只能访问Y(和X)。

histfit模块提供了HistFit类,可基于多次尝试对X / Y数据进行拟合而在数据集上存在一些错误,从而使用拟合曲线生成数据图。例如,在下面的示例中,我们引入3%的错误,并拟合20次数据以查看拟合是否有意义。

Python拟合数据样本的分布

# Python拟合数据样本的分布
# 安装fitter
# pip install fitter
# 生成一段模拟数据
from scipy import stats
import numpy as np
# N(0,2)+N(0,10)
data1 = list(stats.norm.rvs(loc=0, scale=2, size=70000))
data2 = list(stats.norm.rvs(loc=0, scale=20, size=30000))
data = np.array(data1+data2)# 利用fitter拟合数据样本的分布
from fitter import Fitter
# may take some time since by default, all distributions are tried
# but you call manually provide a smaller set of distributions
f = Fitter(data, distributions=['norm', 't', 'laplace', 'rayleigh'])
f.fit()
f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
f.df_errors #返回这些分布的拟合质量(均方根误差的和)
f.fitted_param #返回拟合分布的参数
f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
print(f.get_best(method='sumsquare_error')) #返回最佳拟合分布及其参数
f.hist() #绘制组数=bins的标准化直方图
f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数
print(f.summary())# 方法详解
# Fitter方法
# Fitter(data, xmin=None, xmax=None, bins=100, distributions=None, verbose=True, timeout=10)
# 参数:
# data (list) –输入的样本数据;
# xmin (float) – 如果为None,则使用数据最小值,否则将忽略小于xmin的数据;
# xmax (float) – 如果为None,则使用数据最大值,否则将忽略大于xmin的数据;
# bins (int) – 累积直方图的组数,默认=100;
# distributions (list) – 给出要查看的分布列表。 如果没有,则尝试所有的scipy分布(80种),常用的分布distributions=[‘norm’,‘t’,‘laplace’,‘cauchy’, ‘chi2’,’ expon’, ‘exponpow’, ‘gamma’,’ lognorm’, ‘uniform’];
# verbose (bool) –
# timeout – 给定拟合分布的最长时间,(默认=10s) 如果达到超时,则跳过该分布。# Fitter返回
# f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
# f.df_errors #返回这些分布的拟合质量(均方根误差的和)
# f.fitted_param #返回拟合分布的参数
# f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
# f.get_best(method='sumsquare_error') #返回最佳拟合分布及其参数
# f.hist() #绘制组数=bins的标准化直方图
# f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数# from fitter import Fitter
# import numpy as np
#
# arr = np.arange(1, 200)
# np.random.shuffle(arr)  # arr为创建的随机数
#
# fitter_dis = Fitter(arr)
# fitter_dis.fit()
# distribution_df = fitter_dis.summary()  # 这里可以得到error最小的Dataframe型数据

Python Fitter 判断数据样本的分布函数拟合相关推荐

  1. python拟合统计分布_利用 Python Fitter 判断数据样本符合那种分布函数

    # Python拟合数据样本的分布 # 安装fitter # pip install fitter # 生成一段模拟数据 from scipy import stats import numpy as ...

  2. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

    第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式.具体示例如下. ###拟合年龄 import numpy as np import matplotlib.pyplot as p ...

  3. python获取键盘输入_python之判断数据异常Python读取键盘输入

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: <python之判断数据异常Python读取键盘输入>总结了关于python网站教程,对于我们来www. ...

  4. Python fitter包:拟合数据样本的分布

    Python fitter包:拟合样本数据的分布 安装fitter 生成一段模拟数据 利用fitter拟合数据样本的分布 方法详解 Fitter方法 Fitter返回 参考 安装fitter pip ...

  5. Python拟合数据样本的分布

    安装fitter pip install fitter 生成一段模拟数据 from scipy import stats import numpy as np # N(0,2)+N(0,10) dat ...

  6. Python——fitter包:拟合样本数据的分布

    Python--fitter包:拟合样本数据的分布 安装fitter 使用样例 fitter.Fitter()介绍 安装fitter pip install fitter 使用样例 # 数据生成 fr ...

  7. python组合数据分类_Python解决数据样本类别分布不均衡问题

    所谓不平衡指的是:不同类别的样本数量差异非常大. 数据规模上可以分为大数据分布不均衡和小数据分布不均衡.大数据分布不均衡:例如拥有1000万条记录的数据集中,其中占比50万条的少数分类样本便于属于这种 ...

  8. Python计算任意数据的分布函数(累积概率函数CDF)与概率密度(PDF),并绘图

    分布函数求导就是概率密度,在任意的数据中由于数据分布不确定,所以严格来讲这些数据是没有分布函数和概率密度函数的,但是我们就是想得出那种结果,画出那种曲线,这里就需要借助scipy.stats.relf ...

  9. python数学建模--数据拟合

    目录 numpy.ployfit() scipy.optimize.curve_fit() Python的多个模块中,很多函数或方法可以拟合未知参数,比如 numpy.ployfit() 问题1:对下 ...

最新文章

  1. 阿里云ECS使用SSH连接CentOS 6.9经常断线的问题解决:OperationTimedOut
  2. [译]Node v5.0.0 (Stable)
  3. PM——视屏操作软件
  4. 14 | 深入解析Pod对象(一):基本概念
  5. 在SAP云平台测试帐号中启用Kyma运行环境
  6. 如何自定义一个starter组件
  7. sql union用法和sql union all用法,sql union效率
  8. 损失函数 之 交叉熵
  9. matlab在图像处理中的应用实验,MATLAB实验Matlab在数字图像处理中的应用
  10. 涡CFTurbo 10.2.6 2017泵轮涡旋式机械设计
  11. 基于vue的仿网易云音乐播放器
  12. ubuntu查看opencv版本
  13. java前后端分离(增删查改)
  14. IDEA修改主题颜色,只需要四步
  15. codeforces 697C Lorenzo Von Matterhorn(二叉树LCA)
  16. 过程分析对进行有针对性ICS攻击的意义
  17. Python版实现12306抢票功能,真的能帮你抢到春运回家的票吗?
  18. C语言阶段小项目(火车购票系统)
  19. 2018阿里巴巴基础平台研发工程师实习生笔试题:一.十进制数转换成的二进制数中有几个1. 二.输出IP所在的网段
  20. 【滤波】概率、高斯和贝叶斯

热门文章

  1. android按钮显示注册成功,Android中给按钮注册事件的四种方法
  2. 国内首个基于Windows操作系统的GPU高性能计算集群研制成功
  3. 【Android】实现生成二维码、条形码和扫描二维码的功能
  4. 深入理解GO语言:map结构原理和源码分析
  5. 如何理解c语言中的回调函数
  6. 如何选择企业级数据存储DAS、NAS和SAN
  7. 软件测试中的用户思维
  8. 戴尔台式计算机怎么安装的,戴尔台式系统安装图解 戴尔台式机一键安装系统...
  9. ABP Vnext 扩展微信小程序授权登录
  10. 判断司机是否酒后驾车