gpt4 book ai didi

python - Python 中大数的高斯核密度估计 (KDE)

转载 作者:太空狗 更新时间:2023-10-30 02:05:42 31 4
gpt4 key购买 nike

我有 1000 个大数字,随机分布在 37231 到 56661 之间。

我正在尝试使用 stats.gaussian_kde 但有些东西不起作用。(也许是因为我对统计知识了解不多?)。

代码如下:

from scipy import stats.gaussian_kde
import matplotlib.pyplot as plt

# 'data' is a 1D array that contains the initial numbers 37231 to 56661
xmin = min(data)
xmax = max(data)

# get evenly distributed numbers for X axis.
x = linspace(xmin, xmax, 1000) # get 1000 points on x axis
nPoints = len(x)

# get actual kernel density.
density = gaussian_kde(data)
y = density(x)

# print the output data
for i in range(nPoints):
print "%s %s" % (x[i], y[i])

plt.plot(x, density(x))
plt.show()

在打印输出中,我在第 1 列中得到 x 值,在第 2 列中得到零值。该图显示一条平线。

我根本找不到解决方案。我尝试了非常广泛的 X-es,结果相同。

问题是什么?我究竟做错了什么?大数字可能是原因吗?

最佳答案

我认为发生的事情是您的数据数组由整数组成,这会导致问题:

>>> import numpy, scipy.stats
>>>
>>> data = numpy.random.randint(37231, 56661,size=10)
>>> xmin, xmax = min(data), max(data)
>>> x = numpy.linspace(xmin, xmax, 10)
>>>
>>> density = scipy.stats.gaussian_kde(data)
>>> density.dataset
array([[52605, 45451, 46029, 40379, 48885, 41262, 39248, 38247, 55987,
44019]])
>>> density(x)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

但是如果我们使用 float :

>>> density = scipy.stats.gaussian_kde(data*1.0)
>>> density.dataset
array([[ 52605., 45451., 46029., 40379., 48885., 41262., 39248.,
38247., 55987., 44019.]])
>>> density(x)
array([ 4.42201513e-05, 5.51130237e-05, 5.94470211e-05,
5.78485526e-05, 5.21379448e-05, 4.43176188e-05,
3.66725694e-05, 3.06297511e-05, 2.56191024e-05,
2.01305127e-05])

关于python - Python 中大数的高斯核密度估计 (KDE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814429/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com