使用 fitter 拟合数据分布

news2024/11/24 1:31:48

一、简介

前面的文章中通过假设对比来检验样本是否服从泊松分布。得出的结论是总体分布不服从泊松分布,那么如何找到与总体分布最接近的分布呢?不可能一个个分布去验证。这里便可以用到 fitter 这个库。

fitter 是一个小型的第三方库,提供了一个简单的类来拟合数据的分布,亦即找出与样本最接近的理想的分布。

二、安装

首先安装 fitter,通过 pip install fitter 安装时(v1.3.0),可能会产生报错如下图。根据报错信息(蓝色框部分)可以知道是由于编码问题导致读取文档时出错。因此可以通过在 setup.py 的代码中指定编码来解决。首先通过在浏览器打开下图中的链接,即可下载该库的压缩包到本地。然后将其解压,更改 setup.py 中报错的代码为:long_description = open("README.rst", encoding="utf-8").read(),。最后可以直接在该目录下运行 setup.py 完成安装:python setup.py buildpython setup.py install

在这里插入图片描述

三、测试

还是前面的文章中用到的订单数据,这里先简单的进行分组聚合计算用户购买次数,然后使用 fitter 拟合总体的分布。

import pandas as pd
from scipy import stats
from fitter import Fitter

df = pd.read_csv('orders.csv')
rv = df.groupby('customerId').count().values.reshape(len(df.customerId.unique()), )
f = Fitter(rv)
f.fit()     # 这里会运行相当长的一段时间,默认拟合 stats 子模块中所有的分布类型
f.summary()
In [4]: f.summary()
Out[4]:
           sumsquare_error          aic          bic  kl_div
mielke            0.059989  1175.240085 -7278.518586     inf
burr              0.059989  1175.241738 -7278.518411     inf
burr12            0.060060  1219.259660 -7277.604984     inf
f                 0.060206  1238.451482 -7275.721995     inf
betaprime         0.060206  1238.451445 -7275.721993     inf

上面结果的 aicbic 分别是修正信息标准和贝叶斯信息标准,信息标准(Information criterion)是用于模型选择的一个指标,比较两个模型时,信息标准越低越好。而 kl_div(Kullback Leibler Divergence)为相对熵或称信息散度,相对熵表示使用理论分布拟合真实分布时产生的信息损耗。查看文档中的源码可以看到这几个值在 Fitter._fit_single_distribution 这个类方法中定义和计算。

在这里插入图片描述

为了减少运行时间,下面只测试 10 个常见的分布类型。结果耗时大大缩短,但是结果也不如前者更准确。

import fitter
f = Fitter(data, distributions=fitter.get_common_distributions())
f.fit()
f.summary()
In [10]: f.summary()
Out[10]:
          sumsquare_error          aic          bic  kl_div
lognorm          0.060282  1220.340678 -7281.397879     inf
chi2             0.060321  1315.115666 -7280.908214     inf
gamma            0.060321  1315.107754 -7280.907903     inf
rayleigh         0.063585  1774.082387 -7246.870226     inf
cauchy           0.065384  1147.192894 -7225.327891     inf

在这里插入图片描述

最终得到的结果是,购买次数的分布最接近于 mielke 分布(但是实际上,根据上述对拟合指标的分析,拟合效果是很差的,所以这里仅仅作为一种参考)。总的来说,在实际问题中,随机变量的分布是比理论模型复杂得多的,并且可能是一直在变动而没有一个固定的分布的。因此除了需要更多的数据,还需要控制各种变量才能得到一个确定的总体的总体分布(忽然想起不久前看新闻说某学校要求控制学生的分数服从正态分布,想想这应该挺难的吧,哈哈)。

相关阅读 | Medium

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

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

相关文章

【粉丝投稿】一文带你了解MySQL的左连接与右连接

前言: 昨天粉丝问了一个问题,因此本篇文章主要讲解MySQL的左连接和右连接的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小…

LeetCode——从上到下打印二叉树 II

题目来源 剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣(LeetCode) 题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 示例 给定二叉树:[3,9,20,null,null,15,7] 返回其层…

vuex2实现时间列表选择器

目录 一、效果展示 二、代码分析 2.1、区域确定与坐标获取 2.2、单个点击与一次性点击 一、效果展示 主要借助自定义指令实现。在表格的"td们"上面进行移动框选,有一次性框选和单个框选,去掉自定义指令里的clearTargetNodes()会连续td,连…

Hudi学习5:Hudi的helloworld-编译源码

hudi是使用java代码编写的 部署hudi 1. 下载源码 Download | Apache Hudi https://dlcdn.apache.org/hudi/0.13.1/hudi-0.13.1.src.tgz 2.编译 安装maven 首先要先有JDK java8以上 配置镜像源 执行编译 测试

Yolov5小目标性能提升方案介绍

目录 1.小目标检测介绍 1.1 小目标定义 1.2 难点 2.小目标难点解决方案 2.1注意力提升小目标检测精度 2.1.1 上下文信息CAM 2.1.2 ConvNeXt 2.1.3 ECVBlock 2.1.4 多头上下文集成(Context Aggregation)的广义构建模块 2.2 多头检测头 2.3 loss优化…

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

Go语言net模块TCP和UDP编程实践

任何一种语言TCP和UDP网络编程总是必须的,接下来就将go语言中使用net标准库进行TCP和UDP编程进行梳理总结。 目录 1.代码结构 2.TCP通信 3.UDP通信 4.TCP模拟HTTP协议通信 5.利用TCP扫描那些端口被占用 1.代码结构 2.TCP通信 server.go package mainimport …

【正点原子STM32连载】 第四十八章 内存管理实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第四…

全志V3S嵌入式驱动开发(spi-nand image制作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 上一篇文章,我们说到了spi-nor image的制作和输入。相比较spi-nor,spi-nand虽然在稳定性上面差一点,但是价格上面有很大的优势。举例来说,一般32M的spi-nor大约在6-7元左右,但…

Springboot链接Redis实现AOP防止重复提交

目录 安装redis Springboot链接Redis 1.创建springboot项目 如果spring boot启动报Error creating bean with name redisUtil/redisTemplate 2.新建application.yml配置 3.redis配置类-直接用 4.redis工具类-直接用 5.写Controller测试 6.启动、测试 整合AOP&#xff…

内网横线移动—WmiSmbCrackMapExecProxyChainsImpacket

内网横线移动—Wmi&Smb&CrackMapExec&ProxyChains&Impacket 1. 前置环境准备2. wmic介绍2.1. wmic操作演示2.1.1. 受控主机上线2.1.1.1. 内网存活探测2.1.1.2. 密码抓取 2.1.2. 横向移动2.1.2.1. 上传文件2.1.2.2. 文件上传目标主机2.1.2.3. 执行木马 2.2. wmi…

JAVA 安全-JWT 安全及预编译 CASE 注入等(40)

在各种语言脚本的环境下,也会产生一些新的漏洞,如果是java又能产生那些漏洞,思维导图里面常规漏洞之前都有; java的访问控制,jwt令牌(php几乎没有)组件安全,这些都是java特有的 #综…

C#核心知识回顾——3.继承构造、拆装箱、多态

1.继承中的构造函数: 特点: 当申明一个子类对象时 先执行父类的构造函数,再执行子类的构造函数注意!!: 1.父类的无参构造很重要 2.子类可以通过base关键字代表父类调用父类构造 public class Mot…

【单片机】STM32单片机,定时器的输入捕获,基于捕获的频率计,STM32F103

文章目录 简单介绍外部计数频率计TIM5 频率计 简单介绍 下面的定时器都具有输入捕获能力: 外部计数频率计 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部计数频率计的缺点:需要两个定时器配合&#x…

控制 显示、隐藏

1、使用 v-if < v-if"isShow"></> data(){ return:{ isShow:false } } if (concepts && concepts.length >0){ this.isShow nv.concepts.includes(snap) } 确认 数组中有某个 字段&#xff0c;用includes 有&…

Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等

前言 之前写过一篇博文《Qt鼠标拖动绘制基本几何图形》 &#xff0c;这是介绍使用QGraphic中利用鼠标事件实现基本几何图形的绘制&#xff0c;支持直线、矩形、圆形、椭圆&#xff0c;本次是在此基础上进行扩展&#xff0c;实现背景图导入&#xff0c;并在图片上进行几何图形绘…

现货白银行情实时行情与展望

现货白银作为低门槛、高收益的贵金属投资工具&#xff0c;因为交易时间自且没有涨跌幅限制而大受全球投资者追捧&#xff0c;它每天的实时行情走势中充满机会&#xff0c;投资者可结合技术和基本面分析手段&#xff0c;预测其未来的价格走势&#xff0c;在市场的波动中把握住获…

Go编写流量代理工具

目录 这是一个演示主要分为俩包&#xff1a;流程&#xff1a;逻辑&#xff1a;(端口随意&#xff0c;本地ssh为例)用法&#xff1a;文件地址&#xff1a;代码如下&#xff1a; 这是一个演示 代理本地HTTP服务 代理局域网SSH服务 其他的TCP服务没测试了 主要分为俩包&#x…

什么是DevOps? 什么是DORA?

1. 前言 对于搞云原生应用的同学&#xff0c;对于DevOps和DORA应该都不陌生。但对于传统应用程序开发的同学&#xff0c;经常被DevOps, Microservice, CICD, DORA这些新颖的名词搞得晕头转向。那么到底什么是DevOps? 什么是DORA呢&#xff1f; 2. 解析 2.1 DevOps DevOps并…

群晖NAS搭建WebDV服务手机ES文件浏览器远程访问

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址 转载自cpolar极点云文章&#xff1a;群晖NAS搭建WebDAV服务手机ES文件浏览器远程访问 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,我们在群辉中开启WebDav服…