密度估计在无监督学习、特征工程和数据建模之中都有应用。一些最流行和最有用的密度估计技术是混合模型,如高斯混合(sklearn.mixture.GaussianMixture),和基于近邻(neighbor-based)的方法,如核密度估计(sklearn.neighbors.KernelDensity)。在 聚类这一小节,充分地讨论了高斯混合方法,因为该技术作为一种无监督的聚类方案是很有用的。密度估计是一个非常简单的概念,大多数人已经熟悉的一种常见的密度估计技术:直方图。

1. 密度估计:直方图

直方图是一种简单的数据可视化,其中定义了箱子(bins),并统计了每个箱子(bins)中数据点的数量。下图左上角的面板中显示了直方图的示例:然而,直方图的一个主要问题是:分箱(binning)的选择会对结果的可视化产生不成比例的影响。考虑上图的右上角面板,它在相同的数据上显示了箱子(bin)右移后的柱状图。两种可视化的结果看起来完全不同,可能导致对数据的不同解释。直观地说,我们也可以把直方图看作一堆块,每个点一个块。通过将块堆叠在适当的网格空间中,我们可以恢复直方图。但是,如果我们不是把块堆在一个规则的网格上,而是把每个块放在它所代表的点中心上,然后把每个位置的总高度相加起来会怎么样呢?这个想法导致了左下角的可视化图的现象。它可能没有直方图那么清晰,但数据驱动块位置的事实意味着它是底层数据更好的表示。这种可视化是核密度估计的一个例子,在本例中是一个top-hat核(top-hat kernel,即每个点上的一个正方形块)。我们可以使用更平滑的核(smoother kernel)来恢复更平滑的分布。右下角的图显示了一个高斯核密度估计(Gaussian kernel density estimate),其中每个点对总体分布贡献一个高斯曲线(Gaussian curve),其结果是从数据中导出的平滑密度估计,并作为一个强大的非参数点分布模型发挥作用。

2. 核密度估计(Kernel Density Estimation)

scikit-learn中的核密度估计是在 sklearn.neighbors.KernelDensity估计器中实现的,该估计器使用Ball树或KD树进行有效查询(有关这些问题的讨论,请参见 最近邻)。尽管上面的例子为了简单起见使用了1D数据集,但是核密度估计可以在任何维度的数据上执行,尽管实际上维度灾难会导致其在高维度上的性能下降。在下图中,从双峰分布(bimodal distribution)中提取100个点,并显示三种不同内核的内核密度估计值:从上图中清楚地展示了内核形状如何影响结果分布的平滑度。scikit-learn核密度估计器使用方法如下:

>>> from sklearn.neighbors import KernelDensity>>> import numpy as np>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])>>> kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)>>> kde.score_samples(X)array([-0.41075698, -0.41075698, -0.41076071, -0.41075698, -0.41075698,       -0.41076071])

这里我们使用了 kernel='gaussian',如上所示,数学上,核是由带宽(bandwidth)参数控制的正函数。给定此核形式,在一组点中处的密度估计由以下公式给出:这里的带宽(bandwidth )用作平滑参数,控制结果中偏差(bias)和方差(variance)之间的权衡。大带宽导致非常平滑(即高偏差,high-bias)的密度分布。小带宽导致密度分布不均匀(即高方差,high-variance)。sklearn.neighbors.KernelDensity实现了几种常见的内核形式,如下图所示:这些内核的形式如下:

  • 高斯核 (kernel = 'gaussian')
  • tophat内核 (kernel = 'tophat')
  • Epanechnikov 内核 (kernel = 'epanechnikov')
  • 指数核 (kernel = 'exponential')
  • 线性核 (kernel = 'linear')
  • 余弦核 (kernel = 'cosine')

核密度估计器可以与任何有效的距离度量标准一起使用(有关可用度量标准的列表,请参见sklearn.neighbors.DistanceMetric),尽管仅对欧几里德度量标准的结果进行了适当的标准化,但一种特别有用的度量标准是Haversine距离,它测量球体上各点之间的角距离。下面示例中,使用了核密度估计来可视化地理空间数据,南美洲大陆上两个不同物种的观测分布如下:核密度估计的另一个有用的应用是学习数据集的非参数生成模型,以便有效地从该生成模型中绘制新样本。下面是一个使用此过程创建一组新的手写数字的示例,使用在数据的PCA投影上学到的高斯核:“新”数据由输入数据的线性组合组成,并在给定KDE模型的情况下按概率给出权重。示例

  • 简单的一维核密度估计:一维简单核密度估计的计算。
  • 核密度估计: 使用核密度估计学习手写数字数据的生成模型,并从该模型中绘制新样本的示例。
  • 物种分布的核密度估计: 使用Haversine距离度量标准可视化地理空间数据的核密度估计示例

文壹由“伴编辑器”提供技术支持

☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

密度图的密度估计_scikitlearn — 密度估计相关推荐

  1. R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图

    R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录

  2. 密度图的密度估计_基于核密度的宝鸡地名文化特征与时空分布研究

    点击"江西地名研究 "关注我们      摘 要:目的  从自然和人文方面分析宝鸡市乡镇地名表现的地理环境特征.宝鸡市地名命名规律和蕴含的文化内涵,同时分析在时空分布上的不均衡性. ...

  3. 密度图的密度估计_不同类型的二维密度图小教程

    R相关小教程链接: 用R构建气泡图案例小教程 [小教程]散点图.饼图怎么在我的文章中完美展示小教程 热图在论文发表中完美呈现小教程 R与密度.函数.变量的微妙关系 北京市计算中心医用数据库建设解决方案 ...

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

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

  5. Py之matplotlibseaborn :matplotlibseaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图、密度图、小提琴图等)简介、案例应用之详细攻略

    Py之matplotlib&seaborn :matplotlib&seaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图.密度图.小提琴图等)简介.案例应用之详细攻略 ...

  6. 人群计数经典方法Density Map Estimation,密度图估计

    (3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regressi ...

  7. R 多变量数据预处理_R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...

    作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...

  8. R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...

    作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...

  9. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 往箱线图添加槽口和均值 绘制2D等高线 绘制2D密度图 数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据 ...

最新文章

  1. ITSM实施三招[案例]
  2. Snmp扫描-snmpwalk、snmpcheck
  3. pycharm调试如何返回上一步_如何在瑞芯微RK3399开发板上调用底层接口技术调试笔记...
  4. php异步传输,php 异步处理-上传文件
  5. 软考系统架构师笔记-最后知识点总结(五)
  6. 交互设计实用指南系列(9)— 一次点击
  7. webpack手动搭建vue环境时,main.js引入一直报Uncaught SyntaxError: Unexpected identifier
  8. 清除浮动的方法以及优缺点
  9. 网上订餐系统需求分析报告
  10. 利用阿里云服务器搭建私有云电脑(Windows 11),不受局域网限制,安卓iOS也可随时远程访问
  11. 使用javascript实现对于chineseocr的API调用
  12. 细数常用的5款Java代码混淆器!
  13. Python数据分析-google play store的app数据分析
  14. jeapedu 76 列表刪除一個元素項
  15. Android应用去广告方法盘点
  16. 4246. 【五校联考6day2】san (Standard IO)
  17. EAX、EBX、ECX、EDX
  18. 来听听外国UX设计师的22句话
  19. i5 12500H性能怎么样 相当于什么水平
  20. Cadence allegro小技巧总结

热门文章

  1. 【深度学习21天学习挑战赛】3、使用自制数据集——卷积神经网络(CNN)天气识别
  2. java exchange 数字证书认证_java处理加密文件---数字证书文件格式(cer和pfx)的区别 - 数安时代(GDCA)SSL证书官网...
  3. Arduino IRremoteESP8266库 调用说明以及示例
  4. 除镍树脂-HP4020
  5. 从AE(Auto-encoder)到VAE(Variational Auto-Encoder)
  6. vue x 兼容iphone_详解关于移动端兼容iPhoneX底部小黑条
  7. 解决:QWidget: Cannot create a QWidget when no GUI is being used 程序异常结束
  8. springboot的filter 过滤器的使用
  9. keytool工具实例
  10. openmpi参数_openMPI测试 编译 运行 及MCA框架(zz)