与数据对话:直方图(Histograms)的 3 种最佳替代方案

与数据对话:直方图(Histograms)的 3 种最佳替代方案直方图是数据科学家探索数据时最常见的工具之一 它们以直观的方式展现了数据的分布情况 帮助我们快速了解数据的形态和特征 通过将数据分成多个区间并显示各区间内的数据点数量 直方图使得数据的分布图像化 使我们能够快速发现数据的规律和趋势

欢迎大家来到IT世界,在知识的湖畔探索吧!

与数据对话:直方图(Histograms)的 3 种最佳替代方案

欢迎大家来到IT世界,在知识的湖畔探索吧!

直方图是数据科学家探索数据时最常见的工具之一。它们以直观的方式展现了数据的分布情况,帮助我们快速了解数据的形态和特征。通过将数据分成多个区间并显示各区间内的数据点数量,直方图使得数据的分布图像化,使我们能够快速发现数据的规律和趋势。然而,尽管直方图在许多情况下都表现出色,但它们并不是没有缺陷的。

直方图的主要缺陷之一是分箱偏差。由于直方图将数据分成固定的区间,数据点可能会被不同大小的区间所影响,从而导致数据的分布情况呈现出误导性的结果。此外,直方图对于处理连续数据时也有一定局限性,因为它们无法很好地反映数据的连续性和平滑性。

与数据对话:直方图(Histograms)的 3 种最佳替代方案

从这个直方图中,我们立即可以看出大多数分数集中在60到80之间。

与数据对话:直方图(Histograms)的 3 种最佳替代方案

可以看到分布并不像看起来那么平滑。您可以注意到40个箱时在40、62、68和80周围有小峰值。因此,箱子的数量实际上可能会掩盖我们分布中的重要洞见。

然而,将箱子的数量改变得太多可能只会引入随机噪声,并使其看起来像是一个重要的发现。这就引出了分箱偏差,这是直方图的最大缺陷。

分箱偏差是直方图的一个陷阱,在绘制时改变箱子数量会得到相同数据的不同表示。

因此,我们需要寻找直方图的替代方案,以克服其缺陷并更好地理解数据。接下来,我们将介绍三种最佳替代方案,它们能够提供更全面和准确的数据分析结果。

概率质量函数(PMF/Probability Mass Function)图

直方图的第一种替代方案是绘制概率质量函数的结果。概率质量函数是一个函数,它接受离散数值的分布(任何序列),并返回每个唯一数值的频率。考虑以下小分布:

x = [ 4 , 6 , 5 , 6 , 4 , 3 , 2 ]

欢迎大家来到IT世界,在知识的湖畔探索吧!

为了计算该分布的 PMF,我们将使用库Pmf中的函数(由 Allen B. Downey 编写,他是ThinkStatsThinkPythonThinkBayesempiricaldist等著名书籍的作者:

欢迎大家来到IT世界,在知识的湖畔探索吧!from empiricaldist import Pmf # pip install empiricaldist x = [ 4 , 6 , 5 , 6 , 4 , 3 , 2 ] pmf_dist_norm = Pmf.from_seq(x, normalize=True) print(pmf_dist_norm)
与数据对话:直方图(Histograms)的 3 种最佳替代方案

将加载从 Kaggle 下载的示例学生分数数据集:

marks=pd.read_csv( 'StudentsPerformance.csv' ) marks
与数据对话:直方图(Histograms)的 3 种最佳替代方案

为数学分数创建 PMF 分布,并进行可视化:

欢迎大家来到IT世界,在知识的湖畔探索吧!
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(12,6)) math_pmf = Pmf.from_seq(marks['math score']) math_pmf.plot() ax.set(xlabel='Math Score', ylabel='Frequency', title='The Probabilty of Each Score Occuring Among Students');

线上的每个数据点对应于分布中的唯一分数及其百分比频率。

累积分布函数 (CDF:Cumulative Distribution Function) 图

累积分布函数(CDF)图是一种用于可视化数据分布的方法。CDF图显示了随机变量小于或等于给定值的累积概率分布。通过绘制随机变量的值与其累积概率之间的关系,我们可以直观地了解数据的分布情况以及随机变量取值的累积概率。CDF图对于比较不同数据集的分布、分析数据的变化趋势以及了解数据的百分位数等都非常有用。

以下是math score的分数的最简单CDF示例:

欢迎大家来到IT世界,在知识的湖畔探索吧!from empiricaldist import Cdf cdf_prices = Cdf.from_seq(marks['math score']) # Plot the CDF fig, ax = plt.subplots(figsize=(16, 8)) ax.plot(cdf_prices) plt.show()
与数据对话:直方图(Histograms)的 3 种最佳替代方案

让我们绘制三种不同类型钻石切割的价格。我将创建理想切割、高级切割和非常好切割类型的钻石的CDF图:

diamonds=pd.read_csv('/home/diamonds.csv') ideal = diamonds['cut'] == 'Ideal' ideal_cdf = Cdf.from_seq(diamonds[ideal]['price']) # Premium cuts premium = diamonds['cut'] == 'Premium' premium_cdf = Cdf.from_seq(diamonds[premium]['price']) # Very good cuts very_good = diamonds['cut'] == 'Very Good' very_good_cdf = Cdf.from_seq(diamonds[very_good]['price']) fig, ax = plt.subplots(figsize=(16,8)) # Plot the ideal diamonds ax.plot(ideal_cdf) # Plot the premium diamonds ax.plot(premium_cdf) # Plot the very good diamonds ax.plot(very_good_cdf) ax.set(title='Comparing the Price of Differently-cut Diamonds', xlabel='Price ($)', ylabel='Cumulative Frequency') plt.legend(['Ideal', 'Premium', 'Very Good']) plt.show();
与数据对话:直方图(Histograms)的 3 种最佳替代方案

CDF图展示了不同钻石切割类型的价格分布情况。意外的是,在低价格区间内,理想切割的钻石数量远多于其他两种切割类型。特别是在0到2500美元的价格区间内,理想切割的钻石占比最高,约为60%,而其他类型相对较少。此外,CDF图中线的高度表示该价格区间内的钻石数量,而接近水平的线则表示该区间内的钻石数量较少,但价格较高。

CDF图的优势在于提供了更为清晰的数据分布视图。通过比较不同组的分布,我们可以直观地了解数据的趋势和特征。此外,CDF图能够准确反映出数据的累积分布情况,帮助我们发现数据中的关键信息,从而更加深入地理解数据集。

核密度估计(KDE:Kernel Density Estimate)图

核密度估计(KDE)图是一种用于可视化数据分布形状的有效工具。与概率质量函数(PMF)相比,KDE图使用概率密度函数(PDF),适用于任何类型的分布。在处理连续数据分布时,KDE图可以避免PMF图可能引入的随机噪声,从而提供更准确的数据洞见,避免分箱偏差的陷阱。

连续数据的分布使得每个数据点几乎都是唯一的,这使得我们无法准确地询问某一特定数值的概率。相反,我们更关心的是在某一范围内的概率,而概率密度函数正是用来回答这类问题的。KDE图通过核密度估计方法,能够有效地估计概率密度函数,帮助我们更好地理解数据分布的特征和趋势。

在绘制KDE图时,我们可以使用kdeplot函数来实现。通过对连续数据的分布进行KDE图的绘制,我们能够更清晰地了解数据的分布情况,为数据分析和决策提供更可靠的依据。

欢迎大家来到IT世界,在知识的湖畔探索吧!import seaborn as sns fig, ax = plt.subplots(figsize=(16, 8)) sns.kdeplot(diamonds['price']) ax.set(title='Kernel Density Estimation of Diamond Prices', xlabel='Price ($)');
与数据对话:直方图(Histograms)的 3 种最佳替代方案

KDE图的最佳用途在于快速确定分布的中心倾向、双峰性和偏斜程度。

kdeplot函数有一个有用的参数hue,它允许我们指定第二个变量来分组结果。

fig, ax = plt.subplots(figsize=(16, 8)) sns.kdeplot(x='price', hue='cut', data=diamonds) ax.set(title='KDE Plot of Different Cut Diamonds') plt.show();
与数据对话:直方图(Histograms)的 3 种最佳替代方案

KDE图非常适合比较不同分布,并同时辨别分布的各种特性。例如,上面的图表显示了哪个分布具有更多的值以及它们聚集在哪里,它们的偏斜度和模态性。

在本文中,介绍了三种最常见的直方图替代方案,它们能根据数据类型展示不同的分布洞见,并帮助避免分箱偏差。然而,并不意味着完全放弃直方图,因为您仍然可以通过取数据点数量的平方根来获得对于分布适当数量的箱子的粗略估计。


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/89592.html

(0)
上一篇 20分钟前
下一篇 5分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信