- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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=
您可能关注的文档
- Copulas:超越线性相关性的依赖性建模.docx
- 从直方图到核密度估计.docx
- 极值理论:理解和预测罕见事件.docx
- 结构方程建模:揭示数据中的复杂关系.docx
- 进行功效分析以确定样本量.docx
- 空间统计的迷人世界:分析地理数据.docx
- 懒惰数据科学家掌握统计指南.docx
- 蒙蒂·霍尔问题的解释:概率、决策论以及直觉失败的原因.docx
- 朴素贝叶斯算法:您需要了解的一切.docx
- 倾斜数据解释:为什么右倾斜或左倾斜很重要.docx
- 《GB/T 10810.3-2025眼镜镜片 第3部分:透射比试验方法》.pdf
- 中国国家标准 GB/T 45283.2-2025工业控制系统人机接口组态文件交互 第2部分:基础交互描述.pdf
- 《GB/T 45283.2-2025工业控制系统人机接口组态文件交互 第2部分:基础交互描述》.pdf
- GB/T 45283.2-2025工业控制系统人机接口组态文件交互 第2部分:基础交互描述.pdf
- 中国国家标准 GB/T 10810.3-2025眼镜镜片 第3部分:透射比试验方法.pdf
- GB/T 10810.3-2025眼镜镜片 第3部分:透射比试验方法.pdf
- 《GB/T 27995.1-2025半成品镜片毛坯 第1部分:单焦和多焦》.pdf
- GB/T 27995.1-2025半成品镜片毛坯 第1部分:单焦和多焦.pdf
- 中国国家标准 GB/T 27995.1-2025半成品镜片毛坯 第1部分:单焦和多焦.pdf
- 《GB/T 10810.5-2025眼镜镜片 第5部分:表面耐磨试验方法》.pdf
文档评论(0)