密度图的密度估计_scikitlearn — 密度估计
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 — 密度估计相关推荐
- R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图
R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录
- 密度图的密度估计_基于核密度的宝鸡地名文化特征与时空分布研究
点击"江西地名研究 "关注我们 摘 要:目的 从自然和人文方面分析宝鸡市乡镇地名表现的地理环境特征.宝鸡市地名命名规律和蕴含的文化内涵,同时分析在时空分布上的不均衡性. ...
- 密度图的密度估计_不同类型的二维密度图小教程
R相关小教程链接: 用R构建气泡图案例小教程 [小教程]散点图.饼图怎么在我的文章中完美展示小教程 热图在论文发表中完美呈现小教程 R与密度.函数.变量的微妙关系 北京市计算中心医用数据库建设解决方案 ...
- Py之matplotlib-seaborn :核密度估计(KDE)分析/奇异点分析/相关性分析简、绘图的高级进阶之高级图可视化(直方图-箱线图-密度图-小提琴图等)简介、代码实现之详细攻略
Py之matplotlib-seaborn :核密度估计(KDE)分析/奇异点分析/相关性分析简.绘图的高级进阶之高级图可视化(直方图-箱线图-密度图-小提琴图等)简介.代码实现之详细攻略 目录 根据 ...
- Py之matplotlibseaborn :matplotlibseaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图、密度图、小提琴图等)简介、案例应用之详细攻略
Py之matplotlib&seaborn :matplotlib&seaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图.密度图.小提琴图等)简介.案例应用之详细攻略 ...
- 人群计数经典方法Density Map Estimation,密度图估计
(3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regressi ...
- R 多变量数据预处理_R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...
作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...
- R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...
作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...
- 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)
阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 往箱线图添加槽口和均值 绘制2D等高线 绘制2D密度图 数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据 ...
最新文章
- ITSM实施三招[案例]
- Snmp扫描-snmpwalk、snmpcheck
- pycharm调试如何返回上一步_如何在瑞芯微RK3399开发板上调用底层接口技术调试笔记...
- php异步传输,php 异步处理-上传文件
- 软考系统架构师笔记-最后知识点总结(五)
- 交互设计实用指南系列(9)— 一次点击
- webpack手动搭建vue环境时,main.js引入一直报Uncaught SyntaxError: Unexpected identifier
- 清除浮动的方法以及优缺点
- 网上订餐系统需求分析报告
- 利用阿里云服务器搭建私有云电脑(Windows 11),不受局域网限制,安卓iOS也可随时远程访问
- 使用javascript实现对于chineseocr的API调用
- 细数常用的5款Java代码混淆器!
- Python数据分析-google play store的app数据分析
- jeapedu 76 列表刪除一個元素項
- Android应用去广告方法盘点
- 4246. 【五校联考6day2】san (Standard IO)
- EAX、EBX、ECX、EDX
- 来听听外国UX设计师的22句话
- i5 12500H性能怎么样 相当于什么水平
- Cadence allegro小技巧总结
热门文章
- 【深度学习21天学习挑战赛】3、使用自制数据集——卷积神经网络(CNN)天气识别
- java exchange 数字证书认证_java处理加密文件---数字证书文件格式(cer和pfx)的区别 - 数安时代(GDCA)SSL证书官网...
- Arduino IRremoteESP8266库 调用说明以及示例
- 除镍树脂-HP4020
- 从AE(Auto-encoder)到VAE(Variational Auto-Encoder)
- vue x 兼容iphone_详解关于移动端兼容iPhoneX底部小黑条
- 解决:QWidget: Cannot create a QWidget when no GUI is being used 程序异常结束
- springboot的filter 过滤器的使用
- keytool工具实例
- openmpi参数_openMPI测试 编译 运行 及MCA框架(zz)