我正在使用
KernelDensity
中的 sklearn.neighbors
模块,但 y 轴值很奇怪。有谁知道我该如何解决这个问题?我希望 y 轴对应于百分比概率。
X = data[:, np.newaxis]
X_plot = np.linspace(0, 20, 1000)[:, np.newaxis]
kde = KernelDensity(kernel='gaussian', bandwidth=0.15).fit(X)
log_dens = kde.score_samples(X_plot)
axis.plot(X_plot[:, 0], np.exp(log_dens), '-',
label="kernel = '{0}'".format('pft'))
上图中的 y 轴已经标准化,并且对应于 概率密度(即曲线下的积分是统一的)。这确实是对连续变量有意义的唯一归一化,因为连续分布中任何特定值的“百分比概率”恰好为零。
根据@cel的问题推断,百分比概率的概念不是很清楚。尽管如此,有时我发现用相对术语来表示密度很有用。也许这就是你多年前询问过的问题。
def get_density_ratio_at_zero(values, val):
dens = scipy.stats.gaussian_kde(values)
samp_range = np.linspace(np.min(values), np.max(values), 100)
dens_range = dens(samp_range)
return ((dens(val) - np.min(dens_range)) /
(np.max(dens_range) - np.min(dens_range)))[0]
这将为您提供
val
处的密度,以最大和最小密度之间范围的百分比形式表示