​ 最近在用python复现fluxrank(根因定位)论文,其中用到了核密度估计KDE来计算KPI的变化程度,需要计算累计概率值,网上教程还是挺少的,对于核密度估计算法的原理和实现方式网上教程很多,这里引用一篇,通俗易懂,从零开始实现核密度估计,也有python中sklearn和scipy中自带的API可以直接使用,这里主要记录下怎么实现累积概率函数,分别从sklearn、scipy以及自己实现的方式来讨论下这三种方式实现累积概率

  1. 自己实现的方式
def get_kde(x, data_array, bandwidth=0.1):def gauss(x):import mathreturn (1 / math.sqrt(2 * math.pi)) * math.exp(-0.5 * (x ** 2))N = len(data_array)res = 0if len(data_array) == 0:return 0for i in range(len(data_array)):res += gauss((x - data_array[i]) / bandwidth)res /= (N * bandwidth)return res

​ get_kde是简单版本的概率密度函数,可以输入x,得到对应的概率密度,累计概率是对概率密度的积分,所以要计算一个区间[a,b]的累计概率,以一个较小的值离散化得到一个序列,并将这个值乘以概率值,然后求和,就是一个近似求积分的过程,得到累计概率。

∫abf(x)=1nh∑i=1n[∫abK(x−xih)dx]\int_{a}^{b}f(x) = \frac{1}{nh}\sum_{i=1}^{n}[\int_{a}^{b}K(\frac{x-x_i}{h})dx] ∫ab​f(x)=nh1​i=1∑n​[∫ab​K(hx−xi​​)dx]

  1. sklearn的api

    ​ sklearn中提供sklearn.neighbors.KernelDensity类,可以传入对应的核函数,而且提供score_samples函数计算概率密度,但是很奇怪的是没有提供计算累计概率的API,如果需要实现可以按照1中来实现

  2. scipy的api

    scipy中的stats.gaussian_kde可以计算高斯核函数的密度函数,而且提供了直接计算区间的累计密度函数,integrate_box_1d(low=-np.Inf, high=x)

核密度估计KDE概率密度以及累计概率计算相关推荐

  1. Py之matplotlib-seaborn :核密度估计(KDE)分析/奇异点分析/相关性分析简、绘图的高级进阶之高级图可视化(直方图-箱线图-密度图-小提琴图等)简介、代码实现之详细攻略

    Py之matplotlib-seaborn :核密度估计(KDE)分析/奇异点分析/相关性分析简.绘图的高级进阶之高级图可视化(直方图-箱线图-密度图-小提琴图等)简介.代码实现之详细攻略 目录 根据 ...

  2. 核密度估计python_非参数估计:核密度估计KDE

    核密度估计Kernel Density Estimation(KDE)概述 密度估计的问题 由给定样本集合求解随机变量的分布密度函数问题是概率统计学的基本问题之一.解决这一问题的方法包括参数估计和非参 ...

  3. 非参数估计:核密度估计KDE

    http://blog.csdn.net/pipisorry/article/details/53635895 核密度估计Kernel Density Estimation(KDE)概述 密度估计的问 ...

  4. 非参数估计 -核密度估计(KDE)

    元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017 ...

  5. MATLAB算法实战应用案例精讲-【数据分析】核密度估计KDE(附matlab、R语言和python代码实现)

    目录 前言 几个高频面试题目 1.如何选择KDE核密度估计的带宽 自适应或可变带宽的核密度估计

  6. 二维核密度估计matlab,kdetoolbox(matlab) 核密度估计(kde)的工具箱 - 下载 - 搜珍网

    kde工具箱(matlab)/@kde/adjustBW.dll kde工具箱(matlab)/@kde/adjustBW.m kde工具箱(matlab)/@kde/adjustBW.mexglx ...

  7. 核密度估计 matlab,核密度估计(kde)的工具箱

    kde工具箱(matlab) @kde Contents.m README.txt TODO.txt adjustBW.dll adjustBW.m adjustBW.mexglx adjustPoi ...

  8. 概率密度估计方法-核密度估计和高斯混合分布

    1.概率密度估计方法 概率密度估计方法用于估计一组数据集的概率密度分布,分为参数估计方法和非参数估计方法. 参数估计方法 假定样本集符合某一概率分布,然后根据样本集拟合该分布中的参数,例如:似然估计, ...

  9. 【机器学习sklearn】两个例子轻松搞懂核密度估计KernelDensity

    前言 作业中遇到了需要使用KernelDensity的情况,但是网上的资料参差不齐,找了不短的时间却失望而归,最后还是靠着自己的理解才弄懂sklearn这个函数的使用,特此纪念. [机器学习sklea ...

最新文章

  1. An internal error occurred during: Launching xxx on WebLogic10.x.
  2. Source Insight 格式化
  3. 黄山学院计算机课,黄山学院非计算机类专业计算机课程教学管理规定
  4. Facebook 最新力作 FBNetV3来了!相比 ResNeSt 提速 5 倍,精度不输 EfficientNet
  5. 2021 元宇宙研究报告!
  6. HTML学习笔记:演示HTML页面之间传递数据
  7. 《强化学习》中的时序差分控制:Sarsa、Q-learning、期望Sarsa、双Q学习 etc.
  8. Javascript特效:tab标签
  9. Nand Flash驱动程序分析
  10. BURP安装Turbo Intruder插件报错问题
  11. php手机网页在线录音ios,HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信...
  12. 计算机组成原理课程设计_微程序控制的简单模型机设计
  13. 【Chrome扩展程序】content_script 的跨域问题
  14. 还敢搞黄色?4 个色情网站被一锅端,9 名福利姬被刑拘!
  15. Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding
  16. python的out模式_Python设计模式之状态模式
  17. java SE小练习
  18. CoaoaChina开发者小测验常识题
  19. 图文详解!10大高性能开发核心技术+
  20. css3新特性和其他常见问题(三)

热门文章

  1. Python学习笔记——爬虫原理与Requests数据抓取
  2. cgb2108-day17
  3. 计算机驱动程序签名,如何对驱动程序包进行测试签名
  4. lunix安装anaconda
  5. 那类水果含维生素B多?
  6. (附源码)spring boot自习室座位预约系统 毕业设计 674156
  7. 2021年中国焊接钢管行业产业链及发展现状分析,产销大幅回升,下游建筑行业应用占比超70%「图」
  8. Apache的order、allow、deny
  9. 按键精灵Mid()函数截取字符串:字符串从第几位开始取,取出几个字符
  10. 大型数据创造就业机会