【sklearn第二十四讲】密度估计

机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

密度估计普遍用于无监督学习、特征工程和数据建模。最流行和使用的密度估计技术是混合模型,例如高斯混合模型,基于邻居的方法,例如核密度估计。密度估计的概念很简单,大多数人已经熟悉了一种常见的密度估计技术:直方图。

密度估计:直方图

一个直方图是一个简单的数据可视化方法,它定义了间隔(bins), 落入每个间隔的数据点的个数。一个直方图的例子,请看下图的左上图:
这里写图片描述
直方图的主要问题是,bins的选择对可视化结果有不相称的作用。再来看右上图,它显示的是相同数据的直方图,只是bins右移了。这两个直方图看起来很不同,可能导致对数据的不同解释。

直观上,你可能把直方图看作块堆,每个点一块。通过堆这些块在适合的网格间距里,得到了直方图。但是,如果我们中心化每一块,加和每一个位置的高度,结果如何呢?这个思想导致了左下图,它可能不如一个直方图整洁,但让我们看清了数据驱动块位置的事实,所以它是一种更好的数据可视化方法。

上图是一个核密度估计的例子。通过使用一个平滑核,我们发现了一个平滑分布。右下图显示的是一个高斯核密度估计。

核密度估计

在scikit-learn里,由sklearn.neighbors.KernelDensity执行核密度估计。尽管上图使用的是一维数据,但核密度估计能做任意维数的。在下图里,我们从二项分布抽取100个点,核密度估计来自三种核选择。
这里写图片描述
从图上可以清楚地看到核形状怎样影响结果分布的平滑性。scikit-learn核密度估计量能被如下使用:

from sklearn.neighbors.kde 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)

这里,我们使用了参数kernel=‘gaussian’. 数学上,核是一个受带宽 h h h 控制的正函数 K ( x ; h ) K(x; h) K(x;h). 给定核形式,在一群点 x i , i = 1 , 2 , … , N x_i, i=1,2,\dots,N xi,i=1,2,,N 里的一个点 y y y 的密度估计
ρ K ( y ) = ∑ i = 1 N

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值