KDE相关记录

2023-11-05

20220809 -

在使用KDE的过程中,涉及到一些参数选择,或者运行速度的问题。
目前经过调试之后,对各个部分的内容都进行了涉及,这里记录一下。

首先,KDE(kernel density estimate),是一种无参数的概率密度估计方法?(这里没说错吧,感觉好久没看,都忘了)

那么对于这个方法来说,比较重要的参数就是bandwidth,选择这个参数,有很多方法,如果从机器学习的角度来说,那么直接使用交叉验证的方法即可,他验证的方式是比较最大似然估计的数值,具体代码如下。


params = {'bandwidth': 
np.logspace(0.5, 5, num=10, base=2)}
hyper_kde = GridSearchCV(
KernelDensity(kernel=self.kernel), 
params, n_jobs=-1, cv=5, verbose=0)

hyper_kde.fit(X_train)

从代码中可以看到,直接使用网格搜索的话,整体逻辑还是比较简单的。不过这里,不论是论文里,还是一些博客里,都说是最大似然估计的方式来进行,不过跟平时的时候,使用的那种利用(X,y)进行交叉验证的话,采用准确率等指标来进行评估不太一样,所以这里并不是非常理解。

然后对于运行速度来说,KDE的话,在训练的过程中,他并不存在n_jobs这种参数,经过查看官方文档内容后发现,可以通过leaf_size这个参数指定底层的bd树这种数据结构的内容来提升查询速度?!这里我不是非常确定。不过,将这个数据调大之后,的确速度有所提升,不管是训练还是测试。

但对于对于测试阶段来说,这里主要使用的函数是score_samples,这个函数就可以利用多CPU并行计算的优势来进行了。问答[1]提供了代码如下,

import numpy as np
import multiprocessing
from sklearn.neighbors import KernelDensity

def parrallel_score_samples(kde, samples, thread_count=int(0.875 * multiprocessing.cpu_count())):
    with multiprocessing.Pool(thread_count) as p:
        return np.concatenate(p.map(kde.score_samples, np.array_split(samples, thread_count)))

kde = KernelDensity(bandwidth=2.0,atol=0.0005,rtol=0.01).fit(sample) 
kde_result = parrallel_score_samples(kde, sample)

20220924 -

在前面部分,对于参数bandwidth都是通过交叉验证,来实现的,对于一维数据来说,存在一些经典方法来解决,例如scipy库下的高斯KDE就存在两种方法来进行设置。但是对于这个部分,我并不是非常理解,目前遇到的问题是,利用不同库来进行设置,发现绘制出来的图像不太一样,见[2],具体看了看回答,感觉应该是由于这部分底层实现不太一样导致的。


20220924 -

在sklearn中的KDE,我记得在函数内部中,是可以计算这个累计数据分布(CDF)的,但是在采用scipy的时候,他自身并没有引出这部分内容,也就无法对相应的数值进行计算。文章[3]对这部分进行了介绍,实验表明是可行的。

参考

[1]Scipy: parallel computing in ipython notebook?
[2]Getting bandwidth used by SciPy’s gaussian_kde function
[3]Using scipy gaussian kernel density estimation to calculate CDF inverse

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KDE相关记录 的相关文章

  • Java基础练习题01基本控制流程

    1 输入一个字符 判断它是不是字母 是不是数字 是不是空格字符 public static void main String args System out print 请输入一个字符 Scanner input new Scanner S
  • 西门子S7-1200与V20变频器的USS通信

    USS通信基本原理 USS 协议 Universal Serial Interface Protocol 即通用串行接口协议 是西门子专为驱动装置开发的通用通信协议 它是一种基于串行总线进行数据通信的协议 USS 通信总是由主站发起 USS

随机推荐

  • NFT 项目的十大评估维度

    全文共 5383 字 阅读约需 7 分钟 目录 1 项目的艺术性 2 社区 3 团队 4 路线图 5 使用场景 6 故事性 7 成本度量 8 稀有度 9 流动性 10 趋势 如何判断某一NFT项目是否可冲 这是各大 NFT 社群里都很常见的
  • 软件测试——程序控制流图,McCabe环形复杂度

    软件测试 程序控制流图 McCabe环形复杂度 根据下边的程序流程图 完成 1 画出相应的程序控制流图 根据上述的程序流程图画出程序控制流图 由于一个条件判断语句中有复合条件表达式 故需拆开表示 2 给出控制流图的邻接矩阵 1 2 3 4
  • js中的dataset的使用

    总结 1 document querySelector 的使用 2 data 自定义属性的使用 3 dataset 获取自定义属性值的使用 转载于 https blog 51cto com 11871779 2333045
  • 社区划分的标准--模块度

    在社区发现算法中 几乎不可能先确定社区的数目 于是 必须有一种度量的方法 可以在计算的过程中衡量每一个结果是不是相对最佳的结果 模块度 Modularity 用来衡量一个社区的划分是不是相对比较好的结果 一个相对好的结果在社区内部的节点相似
  • 语言基础篇11——函数、函数参数类型、装饰器、生成器

    函数 基本结构 def func name value print f Hello value return 0 func name World 函数参数 参数默认值和五种参数类型 https docs python org 3 gloss
  • Linux之间NFS挂载,及遇到的问题

    环境 Linux1 192 168 84 139 Linux2 192 168 84 138 目的 将Linux1文件下的 opt share分享给Linux2 步骤 1 两台机器上都安装rpcbind nfs yum install y
  • c++内存安全问题

    写一个好的C 程序 我们要懂得好多东西 比如说最基本的面向对象编程思想 C 的封装 继承 多态机制 设计模式等 还有一个很重要的内容便是性能优化 像C C 这种接近底层的语言 追求的就是性能 与之相关的一项内容便是内存管理 内存分配要合理
  • 如何在Java中将STL转换为PDF或PNG图像?试试这个

    STL文件用于显示3D曲面的几何形状 但是 只有少数与CAD相关的应用程序支持查看或使用STL文件 因此 您可能需要将STL文件转换为PDF或PNG图像 因为它广泛支持PDF或图像文件格式 所以它使您可以在许多操作系统和环境中概述文件 让我
  • ES6之 Module

    ES6之 Module ES6 的 Class 只是面向对象编程的语法糖 升级了 ES5 的构造函数的原型链继承的写法 并没有解决模块化问题 Module 功能就是为了解决这个问题而提出的 JavaScript 一直没有模块 module
  • 如何完美卸载ubuntu系统的解决方法

    由于我本人之前安装ubuntus双系统没把ubuntus卸载干净导致一堆问题 以下给出解决方案 网上的方法差点把我的分区表给删了 问题一 为什么你用硬盘分出来的未使用空间 linux系统读不到你这个空间呢 解决方法 因为之前我装双系统的时候
  • Python 实现MD5加密算法对文件加密 返回加密MD5值

    Python 实现MD5加密算法对文件加密 返回加密MD5值 1 本文知识点 使用Python 实现MD5加密算法对文件内容的加密 返回加密MD5值 可用于文件传输前和接收时的校验文件内容是否丢失 文件传输前将文件内容加密为MD5值 将MD
  • 数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像

    1 均匀分布 1 1标准均匀分布 0 1 import numpy as np 满足0 1均匀分布 X U a b a 0 b 1 s1 np random rand 1000 print s1 期望 E X a b 2 0 1 2 0 5
  • texlive安装过程越来越慢解决办法

    本人安装texlive2022版本 从清华源下载的镜像文件安装过程发生安装包越来越慢的问题 从官网下载镜像文件 没有越来越慢的问题 详细步骤不介绍 希望对您有帮助
  • 根据自己前几篇文章让chatGTP给我生成了一篇论文

    标题 基于LLM模型语言的应用 使用Xshell连接腾讯云服务器并搭载Stable Diffusion 摘要 本文介绍了如何使用LLM模型语言 通过Xshell连接腾讯云服务器 并在服务器上搭载Stable Diffusion 具体而言 我
  • 纯真IP数据库格式详解

    纯真IP数据库格式详解 http lumaqq linuxsir org article qqwry format detail html http blog csdn net cnss archive 2004 08 18 77628 a
  • 一日一技:用Python做游戏有多简单

    自从表白代码发了以后 有很多同学问我除了这种表白的 还有其他什么小游戏吗 游戏是怎么做的 难不难 我就用两篇文章来介绍一下 如果使用Python做游戏 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停 更多小游戏
  • 文举论金:3.10黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • 基数排序--基于计数排序的线性时间复杂度的排序算法

    我们前面提到了一种时间复杂度为O n k 其中k是待排序列最大值的排序算法 计数排序 复习请点击此处 本文我们将继续介绍一种线性时间复杂度的排序算法 基数排序 这种排序算法的时间复杂度为 d n k 这种排序基于我们之前将的计数排序 其中n
  • vue H5跳转小程序报错:config:fail,Error: 系统错误,错误码:63002,invalid signature

    相关文档 微信开发者工具下载地址与更新日志 微信网页开发 JS SDK说明文档 微信 JS 接口签名校验工具 全局返回码说明 H5跳转小程序报错 config fail Error 系统错误 错误码 63002 invalid signat
  • KDE相关记录

    20220809 在使用KDE的过程中 涉及到一些参数选择 或者运行速度的问题 目前经过调试之后 对各个部分的内容都进行了涉及 这里记录一下 首先 KDE kernel density estimate 是一种无参数的概率密度估计方法 这里