You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将实现KDE计算与可视化的R脚本改写为Python脚本

KDE计算与可视化的Python实现方案

以下代码完全复现你提供的R代码逻辑,运行效果和R版本完全一致,仅依赖numpy、matplotlib两个常用数据计算与可视化库:

import numpy as np
import matplotlib.pyplot as plt

# 对应原R代码的输入数据与参数
data = np.array([65, 75, 67, 79, 81, 91])
h = 5.5
kernelpoints = np.arange(50, 151, 1) # 匹配R的seq(50,150,1),np.arange左闭右开所以上限设为151

# 初始化画布与坐标轴范围
plt.figure()
plt.xlim(50, 120)
plt.ylim(0, 0.04)
plt.xlabel('X')
plt.ylabel('K (= density)')

# 逐点计算每个数据对应的核密度曲线
kde_list = []
n_data = len(data)
for val in data:
    z = (kernelpoints - val) / h
    multi = 1 / np.sqrt(2 * np.pi)
    kerneld = (multi * np.exp(-0.5 * z ** 2)) / (n_data * h)
    plt.plot(kernelpoints, kerneld, linewidth=3, c="#1f77b4")
    kde_list.append(kerneld)

# 计算叠加后的总KDE曲线并绘制
kde_sum = np.sum(np.array(kde_list), axis=0)
plt.plot(kernelpoints, kde_sum, linewidth=3, c="red")

# 匹配原R代码的网格设置
plt.grid(visible=True, alpha=0.7)
plt.xticks(np.linspace(50, 120, 20))
plt.yticks(np.linspace(0, 0.04, 20))

plt.show()

如果希望调用成熟的第三方库简化实现,也可以使用scipy的gaussian_kde接口,注意需要手动对齐你设置的带宽参数:

from scipy.stats import gaussian_kde
# 手动指定带宽和你设置的h=5.5对齐,scipy的bw_method参数需要除以数据的标准差完成适配
kde_model = gaussian_kde(data, bw_method= h / data.std(ddof=1))
kde_sum = kde_model(kernelpoints)

手动实现的版本无任何隐藏参数,和原R代码逻辑1:1对齐,不会出现效果偏差。

内容的提问来源于stack exchange,提问作者Minecraft_Json

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:03