【分布族谱】Zipf分布及其Python可视化

news2025/1/15 20:49:49

文章目录

    • zipf分布简介
    • zipfian和zipf对象
    • zipf分布到zeta分布的变化情况
    • 分布族谱图

zipf分布简介

zipf
zeta
离散均匀分布

美国学者Zipf在研究词频的时候发现,如果将一篇较长文章中的词频按照高低依次排列,将频次最高者的词记为1、次高者记为2,依次类推,最后使用频率最低的词为N。若用f表示频次,r表示等级序号,则fr是常数,此即Zipf定律。

相应地,Zipf分布的概率密度函数为

Zipf ⁡ ( k ; α , n ) = 1 k α ∑ i n ( 1 i ) α \operatorname{Zipf}(k;\alpha, n)=\frac{1}{k^\alpha\sum_i^n(\frac{1}{i})^\alpha} Zipf(k;α,n)=kαin(i1)α1

(简洁起见,求和号中 i i i若未加说明,默认从1开始)

则当 n → ∞ n\to\infty n时,可定义黎曼函数

ζ ( α ) = ∑ 1 ∞ ( 1 i ) α \zeta(\alpha)=\sum_1^\infty(\frac{1}{i})^\alpha ζ(α)=1(i1)α

从而

lim ⁡ n → ∞ 1 k α ∑ i n ( 1 i ) α = 1 k α ζ ( α ) \lim_{n\to\infty}\frac{1}{k^\alpha\sum_i^n(\frac{1}{i})^\alpha}=\frac{1}{k^\alpha\zeta(\alpha)} nlimkαin(i1)α1=kαζ(α)1

此即Zeta分布

Zeta ⁡ ( k ; α ) = 1 k α ζ ( α ) \operatorname{Zeta}(k;\alpha)=\frac{1}{k^\alpha\zeta(\alpha)} Zeta(k;α)=kαζ(α)1

在Zipf分布中,若令 α = 0 \alpha=0 α=0,则 Zipf ⁡ ( k ; 0 , n ) = 1 n \operatorname{Zipf}(k;0,n)=\frac{1}{n} Zipf(k;0,n)=n1,这显然是均匀分布的形式,由于 k k k是离散的,所以是离散均匀分布。

zipfian和zipf对象

scipy.stats中,提供了zipfianzipf类,虽然名字都是Zipf,但前者是Zipf分布,后者是Zeta分布。

现随便设一组参数,查看一下zipf分布的大致形状。

import numpy as np
from scipy.stats import zipfian
import matplotlib.pyplot as plt
a, n = 1.25, 10
x = np.arange(1, 11)
y = zipfian.pmf(x, a, n)
plt.stem(x, y)
plt.title('zipfian pmf')
plt.show()

效果如下

在这里插入图片描述

若令a=0,则效果为

a, n = 0, 10
x = np.arange(1, 11)
y = zipfian.pmf(x, a, n)
plt.stem(x, y)
plt.title('uniform pmf')
plt.show()

效果如下,的确是变均匀了

在这里插入图片描述

zipf分布到zeta分布的变化情况

最后,如果让a不断变大,可以看下分布的变化情况

import matplotlib.animation as animation
from scipy.stats import zipf

x = np.arange(1,9)
yZeta = zipf.pmf(x, 10)

fig = plt.figure(figsize=(6,4))
ax = fig.add_subplot(xlim=(1,8))
plt.yscale('log')
plt.grid()
plt.tight_layout()
k_text = ax.text(0.05,0.85,'',transform=ax.transAxes)

sZeta, = ax.plot(x, yZeta)
sZipf = ax.plot(x, zipfian.pmf(x, 0, 10))[0]


def animate(a):
    y = zipfian.pmf(x, a, 10)
    sZipf.set_data(x, y)
    k_text.set_text(f"a={a}")
    return [sZipf]


ani = animation.FuncAnimation(fig, animate, 
    range(10), interval=250)

plt.show()

效果如下

在这里插入图片描述

分布族谱图

zipf分布在下面这张分布族谱图的左上角

在这里插入图片描述

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

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

相关文章

Spring Boot 如果防护 XSS + SQL 注入攻击

Spring Boot 如果防护 XSS SQL 注入攻击 XSS跨站脚本攻击XSS漏洞介绍XSS漏洞分类防护建议 SQL注入攻击SQL注入漏洞介绍防护建议mybatis是如何做到sql预编译的呢 SpringBoot中如何防止XSS攻击和sql注入创建Xss请求过滤类XssHttpServletRequestWraper把请求过滤类XssHttpServlet…

使用fork函数创建一个进程

pid_t fork(void) fork函数调用成功,返回两次 (1)返回值为0,代表当前进程是子进程 (2)返回值为非负数,代表当前进程是父进程 (3)调用失败,则返回-1 代码如…

【人工智能概论】 K折交叉验证

【人工智能概论】 K折交叉验证 文章目录 【人工智能概论】 K折交叉验证一. 简单验证及其缺点1.1 简单验证简介1.2 简单验证的缺点 二. K折交叉验证2.1 K折交叉验证的思路2.2 小细节2.3 K折交叉验证的缺点2.4 K折交叉验证的代码 一. 简单验证及其缺点 1.1 简单验证简介 简单验…

join 语句使用

目录 前言 创建数据 知识点补充 Join算法Index Nested-Loop 小结: Join算法Block Nested-Loop join_buffer放不下驱动表情况 小结: 小表是什么? 总结: 参考内容 前言 在实际开发中,我们一般会有两类问题&a…

腾讯云2核4G服务器5M带宽轻量CPU性能、流量和系统盘测试

腾讯云轻量应用服务器2核4G5M配置,自带5M公网带宽,5M带宽下载速度峰值可达640KB/秒,系统盘为60GB SSD盘,每月500GB流量包,折合每天16GB流量。腾讯云百科来详细说下腾讯云轻量应用服务器2核4G5M配置、CPU型号处理器主频…

威联通nas服务器中勒索病毒被encrypted勒索病毒攻击怎么办有哪些预防措施

威联通是一家专业提供网络存储设备和应用方案的公司,旗下NAS服务器因为实用、多功能而深受用户喜欢,但是NAS服务器在使用过程中也面临许多安全问题,例如被encrypted勒索病毒攻击。下面将为大家介绍encrypted勒索病毒在威联通NAS服务器上的危害…

黑马---Redis入门到实战【实战篇】

一、短信登录 基于session实现短信登录的流程 实现发送短信验证码功能 发送验证码功能: Overridepublic Result sendCode(String phone, HttpSession session) {//1.校验手机号if(RegexUtils.isPhoneInvalid(phone)){//2.如果不符合,返回错误信息return…

Java 基础进阶篇(十三)—— 异常处理机制

文章目录 一、异常概述、体系二、异常的分类三、异常的默认处理流程四、异常的处理机制4.1 编译时异常的处理机制4.1.1 方式一:抛出异常4.1.2 方式二:捕获异常4.1.3 方式三:前两者结合 4.2 运行时异常的处理机制 五、自定义异常5.1 自定义编译…

程序员面试金典10.*

文章目录 10.1合并排序的数组10.02变位词组10.03搜索旋转数组10.05稀疏数组搜索10.09排序矩阵查找10.10 数字流的秩10.11 峰与谷 10.1合并排序的数组 这个就从后往前加入到新数组里就行。如果B的下标是-1则结束,A的下标是-1则一直加B的元素。 class Solution { pub…

挑战14天学完Python---初识python基本图形绘制

往期文章 目录 往期文章前言1."Python蟒蛇绘制"实例2.Python标准库 之turtle库3. 面向对象编程风格3.1 import更多玩法3.1.1使用from和import保留字共同完成3.1.2 使用import和as保留字共同完成 4.turtle的原(wan)理 (fa)4.1 turtle绘图窗体布局---turtul.setup()4.2…

京东小程序折叠屏适配探索 | 京东云技术团队

前言 随着近年来手机行业的飞速发展,手机从功能机进入到智能机,手机屏幕占比也随着技术和系统的进步越来越大,特别是Android 10推出以后,折叠屏逐渐成为Android手机发展的趋势。 图 1 Android手机屏幕发展趋势 京东小程序近年来…

Python程序员辞职后,如何踏出自由职业的第一步,聊聊我自己的看法

大家好,我是兴哥。有个广州的朋友说他辞职了,想要自由职业该怎么开始第一步呢?我问他你之前的收入月薪是多少,他说2万出头。我不得不说,对于写项目的自由职业程序员,2万是一个极高的门槛。但既然他已经辞职…

第三十章 React的路由基本使用

关于React路由,我们在学习之前先了解一下其他知识点:SPA应用、路由的理解、react中如何使用路由。 SPA应用的理解 我们知道React脚手架给我们构建的是一个单页应用程序(SPA),在页面加载时,只会加载一个HT…

2.Redis入门概述

1.Redis是什么 Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议, 是一个高性能的Key-Value数据库, 提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。 数据是存在内存中的&a…

学会这几个Word技巧,让你办公省时又省力(二)

Word是我们经常用到的办公软件,下面分享的几个小技巧,可以提高你的办公效率,一起看看吧。 1. 改变Word文档的背景颜色 有时候我们打开的Word文档是有颜色的,如果你想恢复白色背景,或者改成其他颜色,只…

《Linux 内核设计与实现》08. 下半部和推后执行的工作

文章目录 下半部软中断软中断的实现使用软中断 tasklettasklet 的实现使用 tasklet 工作队列工作队列的实现使用工作队列 下半部 中断处理程序的局限性: 中断处理程序以异步方式执行,并且可能打断其它代码,因此为了避免被打断的代码停止时间…

PR控制以及使用PR控制用于单相离/并网逆变器

文章目录 前言基本知识实际使用单相离网逆变器单相并网逆变器 PR控制器离散化基本知识 DSP实现总结 前言 最近想学习一下并网逆变器,需要用到PR控制,全网找遍了许多学习资料,终于掌握的差不多了,在此做个记录,以及个人…

【每日一题】23年4月

文章目录 C 技术点多边三角形剖分的最低得分(dp思路,选不选问题)移动石子到连续(思路)1027. 最长等差数列(动态规划)1105. 填充书架(动态规划)1031 两个非重叠子数组的最大和1163.按字典序排在最…

【Java 】从源码全面解析Java 线程池

文章目录 一、引言二、使用三、源码1、初始化1.1 拒绝策略1.1.1 AbortPolicy1.1.2 CallerRunsPolicy1.1.3 DiscardOldestPolicy1.1.4 DiscardPolicy1.1.5 自定义拒绝策略1.2 其余变量 2、线程池的execute方法3、线程池的addWorker方法3.1 校验3.2 添加线程 4、线程池的 worker …

PostgreSQL 基础知识:psql 提示和技巧

对于积极使用和连接到 PostgreSQL 数据库的任何开发人员或 DBA 来说,能够访问psql命令行工具是必不可少的。在我们的第一篇文章中,我们讨论了 psql的简要历史,并演示了如何在您选择的平台上安装它并连接到 PostgreSQL 数据库。 在本文中&…