机器学习训练营——机器学习爱好者的自由交流空间(入群联系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讲】均值偏移聚类算法相关推荐

  1. 以最易懂的人话讲分类和聚类算法(建议分享和收藏)

    以最易懂的人话讲分类和聚类算法(建议分享) 今天在使用聚类方法进行客户价值分析时遇到了个问题,将我卡住了半个小时,实际上现在想来是一个很简单的问题,但是大家都知道,一个人脑子短路时就是会一个小学数学题 ...

  2. 推荐算法-聚类-均值偏移聚类(爬山算法)

    均值偏移(Mean shift)聚类算法是一种基于滑动窗口(sliding-window)的算法,它视图找到密集的数据点.而且,它还是一种基于中心的算法,他的目标是定位每一组群/类的中心点,通过更新中 ...

  3. 用python做简单的聚类分析案例_Python聚类算法之DBSACN实例分析

    本文实例讲述了Python聚类算法之DBSACN.分享给大家供大家参考,具体如下: DBSCAN:是一种简单的,基于密度的聚类算法.本次实现中,DBSCAN使用了基于中心的方法.在基于中心的方法中,每 ...

  4. Python数据挖掘与机器学习,快速掌握聚类算法和关联分析

    摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题.分类算法与聚类到底有何区别?聚类方法应在怎样的场景下使用?如何使用关联分析算法解决个性化推荐问 ...

  5. python音频聚类_利用python的KMeans和PCA包实现聚类算法

    题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...

  6. Java实例_综合实践3.K-Means聚类算法

    编写程序实现K-Means聚类算法 (见图 4-12). K-Means是一种聚类算法,后者属于机器学习中的无监督学习,用于识别给定数据集 中的若干数据簇--即每个数据所属的分类. K-Means算法 ...

  7. kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

    一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心. 3.对每个点确定其聚类中心点. 4.再计算其聚类新中心. 5.重复以 ...

  8. 【转】利用python的KMeans和PCA包实现聚类算法

    转自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html 题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚 ...

  9. python画罗小黑_python股票数据聚类算法:罗小黑战记的股票_XAC配资之家

    python股票数据聚类算法:罗小黑战记的股票 你好朋友,本文将为你分析python股票数据聚类算法怎么样以及罗小黑战记的股票的相关问题,如有任何疑问和留言咨询站长!有了尊严,我们的人生才会快乐.美好 ...

  10. 【主色提取】模糊C均值(FCM )聚类算法和彩色图像快速模糊C均值( CIQFCM )聚类算法

    系列文章目录 第一章 主色提取入门之FCM 和 CIQFCM 目录 系列文章目录 前言 一.FCM 聚类算法 1 基本思想 ​编辑 2 FCM 的缺陷 二.CIQFCM 聚类算法 1 集群空间映射 1 ...

最新文章

  1. 开发日记-20190511 关键词 onStart()和onResume()存在的原因(猜测篇)
  2. 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
  3. SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
  4. 飞控所有PID参数都无法消除振荡问题
  5. 常用汇编浮点操作指令
  6. 莫烦Matplotlib可视化第五章动画代码学习
  7. kubernetes 简介:kube-dns 和服务发现
  8. 孙宏斌,真的押上了全部身家?
  9. 55 - 算法 -动态规划 -数塔问题 感觉都是数组建模 递推方法规则
  10. keras中Dense()和Flatten()不同
  11. python中bar是什么_python-如何添加一个单独的colobar,它将显示来...
  12. s7300plc串口通信_西门子PLC300串口通信协议比较与分析
  13. poj2991(Crane)线段树+计算几何
  14. mac本地代码上传git
  15. httpclient4.3+jsoup模拟登陆河北移动
  16. USB之基本协议和数据波形1
  17. jvisualvm监控本地jvm
  18. 在地化和本土化的区别_本地化、全球化和国际化:区别何在?
  19. 数据分析基础-假设检验原理详解
  20. NCBI genebank refseq 编号意义

热门文章

  1. Pascal数据结构与算法
  2. Sublime Text关闭自动更新
  3. 十种日常食物比砒霜还毒!
  4. Three Tips
  5. PX4无人机配置4G空地多机组网系统
  6. Bugku-Web-Cookies欺骗
  7. Vue.js 代码优化浅谈
  8. 基于mpvue的toast组件
  9. cisco配置交换机管理地址和默认网关
  10. GDUFE ACM-1096