sklearn聚类算法之Meanshift

基本思想

Meanshift是一个简单的概念,但不太好解释,用类比的方法解释或许比较容易理解。想象有一个雾气弥漫的足球场(即一个二维的特征空间),上面站着100个人(即我们的观察值)。因为雾很大,人只能看到很近的地方。每分钟每个人向四周看一看,然后朝着可以看到最多人的方向移动一步。随着时间流逝,因为人们一次次地朝着越来越大的人群移动,球场上的人开始聚集成一个小组,最终这些人就在球场上形成了聚类(cluster)。每个人的分类被指定为他们最终所在的分类。Meanshift算法步骤如下:

  1. 首先以随机选取的点为圆心、r为半径做一个圆形的滑窗,目标是找出数据点中密度最高处,然后作为中心
  2. 在每次迭代后滑动窗口的中心将向着较高密度的方向移动
  3. 连续移动,直到任何方向的移动都不增加滑窗中点的数量,此时滑窗收敛
  4. 在多个滑窗上进行上述步骤以覆盖所有的点,当多个滑窗收敛重叠时,其经过的点会通过其滑窗聚类为一个类

API学习

class sklearn.cluster.MeanShift(
	*, 
	bandwidth=None, 
	seeds=None, 
	bin_seeding=False, 
	min_bin_freq=1, 
	cluster_all=True, 
	n_jobs=None, 
	max_iter=300
)
参数类型功能
bandwidthfloat, default=None带宽,可以理解为设定的质心圆的半径
seedsarray-like of shape(n_samples, n_features),default = None用于初始化核的种子,形状是(n_samples, n_features),如果未设置,则通过簇来计算
bin_seedingbool, default=False设定初始核的位置参数的生产方式
min_bin_freqint, default=1为了加快算法,只接受滑窗内至少有min_bin_freq个点的滑窗作为种子
cluster_allbool, default=True为True时表示即使孤立不在核内的点,也要进行聚类,它们会被分配到临近的核中;否则它们的簇标签会被赋值为1
n_jobsint, default=None指定计算所用的进程数
max_iterint, default执行一次算法所进行的最大迭代数
属性类型功能
cluster_centers_ndarray of shape(n_clusters, n_features)聚类中心的坐标
labels_ndarray of shape(n_samples,)分类结果
n_iter_int运行的迭代次数
n_features_in_int拟合期间的特征个数
feature_names_in_ndarray of shape(n_features_in_,)拟合期间的特征名称
方法说明
fit(X[, y])Perform clustering.
fit_predict(X[, y])Perform clustering on X and returns cluster labels.
get_params([deep])Get parameters for this estimator.
predict(X)Predict the closest cluster each sample in X belongs to.
set_params(**params)Set the parameters of this estimator.

代码示例

>>> from sklearn.cluster import MeanShift
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])
>>> clustering = MeanShift(bandwidth=2).fit(X)
>>> clustering.labels_
array([1, 1, 1, 0, 0, 0])
>>> clustering.predict([[0, 0], [5, 5]])
array([1, 0])
>>> clustering
MeanShift(bandwidth=2)

参考文献

[1] Dorin Comaniciu and Peter Meer, “Mean Shift: A robust approach toward feature space analysis”. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2002. pp. 603-619.

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值