如何有效地计算给定数据的pdf

2024-04-20 12:57:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用numpy.histogram计算我的虹膜数据集中刚毛花花瓣长度的概率分布函数

我想画出刚毛花花瓣长度的概率分布函数。不幸的是,我搞不清楚np.histogram到底返回了什么。 在下面的代码中使用我模糊的知识,我设置了10箱和密度为真。你知道吗

任何人都可以请提供任何见解,以便下面的代码做什么,基本上什么是PDF? 还有没有其他更好的方法来计算给定数据集的PDF?你知道吗

import pandas as pd
import numpy as np

iris = pd.read_csv('iris.csv')
iris_setosa = iris[iris.species == 'setosa']

counts,bin_edges=np.histogram(iris_setosa["petal_length"],bins=10,density=True)

pdf=counts/sum(counts)

Tags: 数据函数代码importnumpyirispdfas
2条回答

可以使用np.histogram函数从样本数据创建直方图,使用scipy.stats.rv_histogram函数处理直方图。请参阅文档中的rv_histogramhere以获取说明。你知道吗

rv_histogram存储分布的参数,除其他外,还可用于计算pdfcdf

from scipy.stats import rv_histogram
import numpy as np

x = np.random.random(10000)
r = rv_histogram(np.histogram(x, bins=100))

r.pdf(np.linspace(0,1,5))  # 0, 0.25, 0.5, 0.75, 1
>> array([0.        , 0.96009784, 1.05010702, 0.97009886, 0.        ])

r.cdf(np.linspace(0,1,5))
>> array([0.        , 0.2554366 , 0.50824724, 0.75229438, 1.        ])

既然设置了density=True,那么说这里计算的是概率密度函数是最正确的。概率分布函数这个术语有点模棱两可,因为有很多方法可以量化数据的概率分布。你知道吗

我将在维基百科页面上提供一个关于概率密度函数的链接,但实际上它在给定范围内的积分给出了该范围的概率。你知道吗

概率密度函数:https://en.wikipedia.org/wiki/Probability_density_function

如果我理解正确的话,在这一行:

pdf=counts/sum(counts)

你想把计数的值标准化。据我所知,density=True已经为您完成了这项工作,因此无需执行以上代码行。你知道吗

我不知道在这种情况下是否有更好的方法来计算PDF,但从我所能告诉你的是,增加垃圾箱的数量会给你一个更好的PDF近似值。你知道吗

你知道吗numpy.直方图:https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html

相关问题 更多 >