网站大量收购独家精品文档,联系QQ:2885784924

为直方图选择最佳的 bin 大小.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

为直方图选择最佳的bin大小

在处理大型数据集时,了解数据的分布至关重要。直方图是为此目的最强大、最直观的可视化工具之一,专为在区间尺度上测量的数值数据而设计。

然而,创建有效的直方图需要仔细考虑箱的大小。直方图中的条形数量由箱大小决定,可以显着影响您从数据中获得的见解。垃圾箱太少可能会隐藏重要的细节,而太多则可能会造成图片混乱和混乱。关键是要记住,不存在普遍“完美”的bin大小-最佳选择取决于您的特定数据集、其特征以及您想要通过可视化讲述的故事。

在本教程中,我们将探索直方图分级的艺术和科学。我们将从了解直方图及其用例开始,然后深入研究使用合成数据集的实际示例。我们将比较流行Python库的默认分箱行为,研究Seaborn的“自动”分箱方法,并探索其他分箱方法,例如平方根规则、Rice规则、Scott规则和Doane规则。最后,您将深入了解可用的不同分箱方法以及何时使用它们,以及尝试分箱大小以创建有效传达数据故事的直方图的实用技巧。

什么是直方图?

直方图是一种图形表示形式,它将数据组织到连续的相邻箱中,并显示每个箱内的观察频率。直方图的独特之处有两个关键方面:

数据组织:x轴显示划分为间隔(箱)的值范围,而y轴表示频率密度。

面积表示:每个条形的面积表示属于该箱内的数据点的频率,使总面积与总频率成正比。

了解我们的示例数据

在深入研究分箱方法之前,让我们先了解一下我们将使用的数据类型。在本指南中,我们将使用代表常见现实场景的合成数据集:双峰分布(具有两个峰值的数据)。

将numpy导入为np

将matplotlib.pyplot导入为plt

将seaborn导入为sns

#创建我们的样本数据

np.随机.种子(42)

数据=np.concatenate([

np.random.normal(0,1,1000),#主组:以0为中心的1000个点

np.random.normal(4,1.5,500)#第二组:以4为中心的500点

])

流行库中的默认行为

当您第一次创建直方图时,您可能会使用Matplotlib或Seaborn。让我们了解他们的默认行为。?

Matplotlib的默认值:10Bins

Matplotlib默认采用一种简单的方法:它将数据分为10个等宽的bin。这很简单,但对于复杂的分布来说可能过于简单。

Seaborn的默认值:自动

Seaborn使用NumPy的自动bin选择方法,该方法在sturges和fd?(Freedman-Diaconis)规则之间选择最大bin计数。通过确保可视化中有足够的细节,这通常可以为探索提供更好的起点。

让我们想象一下这些默认行为的比较:

#创建一个并排有两个子图的图形

图,(ax1,ax2)=plt.subplots(1,2,Figsize=(15,5))

#Matplotlib默认值

ax1.hist(data)#未指定bin-将使用默认值10

ax1.set_title(Matplotlib默认\n(10bins),fontsize=20)

ax1.set_xlabel(值,fontsize=18)

ax1.set_ylabel(频率,fontsize=18)

#Seaborn默认值

sns.histplot(data=data,ax=ax2)#使用seaborn的histplot

ax2.set_title(Seaborn默认\n(自动),fontsize=20)

ax2.set_xlabel(值,fontsize=18)

ax2.set_ylabel(频率,fontsize=18)

plt.tight_layout()

使用我们的示例数据,Matplotlib和Seaborn的默认方法将生成以下直方图:?

了解Seaborn的自动Bin选择

让我们更深入地了解Seaborn的自动设置是如何工作的。根据NumPy的文档,auto方法在sturges和fd?(Freedman-Diaconis)规则之间选择(最小bin宽度或)最大bin计数。我们可以直接检查这一点:

#使用每种方法计算bin数量

n_bins_sturges=np.ceil(np.log2(len(data))+1)#Sturges公式

q75,q25=np.percentile(数据,[75,25])

iqr=q75-q25

h=2*iqr/(len(data)**(1/3))#FD规则bin宽度

range_fd=

文档评论(0)

晶方科技 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档