小编Eri*_*mez的帖子

如何在Python中使用高斯kde内核设置带宽来平滑线条

我正在尝试使用 python gaussian_kde 平滑以下数据,但是它无法正常工作,看起来 kde 正在对整个数据集的分布进行重新采样,而不是对每个点使用带宽并给出权重来进行平滑

from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
import numpy as np
y=[ 191.78 ,   191.59,    191.59,    191.41,    191.47,    191.33,    191.25  \
  ,191.33 ,   191.48 ,   191.48,    191.51,    191.43,    191.42,    191.54    \
  ,191.5975,  191.555,   191.52 ,   191.25 ,   191.15  ,  191.01  ]
x = np.linspace(1 ,20,len(y))
kde= gaussian_kde(y)
kde.set_bandwidth(bw_method=kde.factor / 3)

fig, ax = plt.subplots(figsize=(10, 10))
ax.legend(loc='center left', bbox_to_anchor=(1.05, 0.5), frameon=False)
ax.scatter(x, y, color='black', label='data')
ax.plot(x,y,color='red')
ax.plot(x,kde(x))
Run Code Online (Sandbox Code Playgroud)

这是数据图表

未经平滑处理的数据图表

您可以注意到图表并没有平滑线条

平滑后的图表

python math numpy scipy

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

math ×1

numpy ×1

python ×1

scipy ×1