下面的两个图传达了大致相同的信息。
左边的一个是直方图,其中 Y 轴代表频率(即我们看到与每个 bin 相关的范围内的值的频率)。
右边是密度(KDE 估计)。Y 轴表示密度(积分应该加起来为 1)。
我通常更喜欢密度图(您可以调整,但 Y 轴通常更难解释。
我知道KDE估计将返回一个密度加起来为1,假设变量的域从-Inf跨越到Inf,但是有没有办法将KDE估计产生的PDF映射到频率(例如,将值放大到有频率)?
这只是轴的“缩放”问题吗?或者还有什么其他的关系吗?
下面的两个图传达了大致相同的信息。
左边的一个是直方图,其中 Y 轴代表频率(即我们看到与每个 bin 相关的范围内的值的频率)。
右边是密度(KDE 估计)。Y 轴表示密度(积分应该加起来为 1)。
我通常更喜欢密度图(您可以调整,但 Y 轴通常更难解释。
我知道KDE估计将返回一个密度加起来为1,假设变量的域从-Inf跨越到Inf,但是有没有办法将KDE估计产生的PDF映射到频率(例如,将值放大到有频率)?
这只是轴的“缩放”问题吗?或者还有什么其他的关系吗?
您必须先计算密度点,然后再进行绘图。阅读http://scikit-learn.org/stable/modules/density.html。一些代码:
from sklearn.neighbors.kde import KernelDensity
import numpy as np
import matplotlib.pyplot as plt
# This X is your data for the histogram
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
X = X.reshape(-1, 1)
kde = KernelDensity(kernel='gaussian', bandwidth=1).fit(X)
x = np.linspace(X.min(), X.max(), 100).reshape(-1, 1)
density = np.exp(kde.score_samples(x))
plt.plot(x, density)
plt.show()