【Python实例第17讲】均值偏移聚类算法
机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
均值偏移(mean shift
)是一个非参数特征空间分析技术,用来寻找密度函数的最大值点。它的应用领域包括聚类分析和图像处理等。
均值偏移算法
均值偏移是一个迭代地求密度函数极值点的方法。首先,从一个初始估计 xxx 出发。这里要给定一个核函数 K(xi−x)K(x_i-x)K(xi−x), 典型采用的是高斯核。核函数用来确定 xxx 的邻近点的权,而这些邻近点用来重新计算均值。这样,在 xxx 点的密度的加权均值
m(x)=∑xi∈N(x)K(xi−x)xi∑xi∈N(x)K(xi−x)m(x)=\dfrac{\sum_{x_i\in N(x)}K(x_i-x)x_i}{\sum_{x_i\in N(x)}K(x_i-x)}m(x)=∑xi∈N(x)K(xi−x)∑xi∈N(x)K(xi−x)xi
其中,N(x)N(x)N(x) 是 xix_ixi 的邻居集。称
m(x)−xm(x)-xm(x)−x
是mean shift
. 现在,升级 xxx 的值为 m(x)m(x)m(x), 重复这个估计过程,直到 m(x)m(x)m(x) 收敛。
以下是一个迭代过程的示意图。
聚类应用
均值偏移聚类的目的是发现来自平滑密度的样本团(‘blobs’). 它是一个基于质心的算法,当质心的改变很小时,将停止搜索。因此,它能够自动设置类数,这是与k-means
聚类法的显著区别。当确定所有质心后,质心对应类。对于每一个样本点,将它归于距离最近的质心代表的类里。
A demo example
import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets.samples_generator import make_blobs# #############################################################################
# Generate sample data
centers = [[1, 1], [-1, -1], [1, -1]]
X, _ = make_blobs(n_samples=10000, centers=centers, cluster_std=0.6)# #############################################################################
# Compute clustering with MeanShift# The following bandwidth can be automatically detected using
bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_labels_unique = np.unique(labels)
n_clusters_ = len(labels_unique)print("number of estimated clusters : %d" % n_clusters_)# #############################################################################
# Plot result
import matplotlib.pyplot as plt
from itertools import cycleplt.figure(1)
plt.clf()colors = cycle('bgrcmykbgrcmykbgrcmykbgrcmyk')
for k, col in zip(range(n_clusters_), colors):my_members = labels == kcluster_center = cluster_centers[k]plt.plot(X[my_members, 0], X[my_members, 1], col + '.')plt.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col,markeredgecolor='k', markersize=14)
plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.show()
number of estimated clusters : 3
精彩内容,请关注微信公众号:统计学习与大数据
【Python实例第17讲】均值偏移聚类算法相关推荐
- 以最易懂的人话讲分类和聚类算法(建议分享和收藏)
以最易懂的人话讲分类和聚类算法(建议分享) 今天在使用聚类方法进行客户价值分析时遇到了个问题,将我卡住了半个小时,实际上现在想来是一个很简单的问题,但是大家都知道,一个人脑子短路时就是会一个小学数学题 ...
- 推荐算法-聚类-均值偏移聚类(爬山算法)
均值偏移(Mean shift)聚类算法是一种基于滑动窗口(sliding-window)的算法,它视图找到密集的数据点.而且,它还是一种基于中心的算法,他的目标是定位每一组群/类的中心点,通过更新中 ...
- 用python做简单的聚类分析案例_Python聚类算法之DBSACN实例分析
本文实例讲述了Python聚类算法之DBSACN.分享给大家供大家参考,具体如下: DBSCAN:是一种简单的,基于密度的聚类算法.本次实现中,DBSCAN使用了基于中心的方法.在基于中心的方法中,每 ...
- Python数据挖掘与机器学习,快速掌握聚类算法和关联分析
摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题.分类算法与聚类到底有何区别?聚类方法应在怎样的场景下使用?如何使用关联分析算法解决个性化推荐问 ...
- python音频聚类_利用python的KMeans和PCA包实现聚类算法
题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...
- Java实例_综合实践3.K-Means聚类算法
编写程序实现K-Means聚类算法 (见图 4-12). K-Means是一种聚类算法,后者属于机器学习中的无监督学习,用于识别给定数据集 中的若干数据簇--即每个数据所属的分类. K-Means算法 ...
- kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心. 3.对每个点确定其聚类中心点. 4.再计算其聚类新中心. 5.重复以 ...
- 【转】利用python的KMeans和PCA包实现聚类算法
转自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html 题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚 ...
- python画罗小黑_python股票数据聚类算法:罗小黑战记的股票_XAC配资之家
python股票数据聚类算法:罗小黑战记的股票 你好朋友,本文将为你分析python股票数据聚类算法怎么样以及罗小黑战记的股票的相关问题,如有任何疑问和留言咨询站长!有了尊严,我们的人生才会快乐.美好 ...
- 【主色提取】模糊C均值(FCM )聚类算法和彩色图像快速模糊C均值( CIQFCM )聚类算法
系列文章目录 第一章 主色提取入门之FCM 和 CIQFCM 目录 系列文章目录 前言 一.FCM 聚类算法 1 基本思想 编辑 2 FCM 的缺陷 二.CIQFCM 聚类算法 1 集群空间映射 1 ...
最新文章
- 开发日记-20190511 关键词 onStart()和onResume()存在的原因(猜测篇)
- 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
- SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
- 飞控所有PID参数都无法消除振荡问题
- 常用汇编浮点操作指令
- 莫烦Matplotlib可视化第五章动画代码学习
- kubernetes 简介:kube-dns 和服务发现
- 孙宏斌,真的押上了全部身家?
- 55 - 算法 -动态规划 -数塔问题 感觉都是数组建模 递推方法规则
- keras中Dense()和Flatten()不同
- python中bar是什么_python-如何添加一个单独的colobar,它将显示来...
- s7300plc串口通信_西门子PLC300串口通信协议比较与分析
- poj2991(Crane)线段树+计算几何
- mac本地代码上传git
- httpclient4.3+jsoup模拟登陆河北移动
- USB之基本协议和数据波形1
- jvisualvm监控本地jvm
- 在地化和本土化的区别_本地化、全球化和国际化:区别何在?
- 数据分析基础-假设检验原理详解
- NCBI genebank refseq 编号意义