通常,人们根据样本间的某种距离或者相似性来定义聚类,即把相似的(或距离近的)样本聚为同一类,而把不相似的(或距离远的)样本归在其他类。
所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。
k-means算法是一种很常见的聚类算法,它的基本思想是:通过迭代寻找k个聚类的一种划分方案,使得用这k个聚类的均值来代表相应各类样本时所得的总体误差最小。
看起来还不错
分析一个公司的客户分类,这样可以对不同的客户使用不同的商业策略,或是电子商务中分析商品相似度,归类商品,从而可以使用一些不同的销售策略,等等。
谱聚类概念 :
谱聚类是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的母的。谱聚类可以理解为将高维空间的数据映射到低维,然后在低维空间用其它聚类算法(如KMeans)进行聚类。
算法步骤
1 计算相似度矩阵 W
2 计算度矩阵 D
3 计算拉普拉斯矩阵L=D-W
4 计算L的特征值,将特征值从小到大排序,取前k个特征值.将这个特征值向量转换为矩阵
5 通过其他聚类算法对其进行聚类,如k-means
详细公式和概念请到 大佬博客
相比较PCA降维中取前k大的特征值对应的特征向量,这里取得是前k小的特征值对应的特征向量。但是上述的谱聚类算法并不是最优的,接下来我们一步一步的分解上面的步骤,总结一下在此基础上进行优化的谱聚类的版本。
python实现
例子一:使用谱聚类从噪声背景中分割目标
效果图
例子2:分割图像中硬币的区域
效果图
注意
1)当聚类的类别个数较小的时候,谱聚类的效果会很好,但是当聚类的类别个数较大的时候,则不建议使用谱聚类;
(2)谱聚类算法使用了降维的技术,所以更加适用于高维数据的聚类;
(3)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法(比如K-Means)很难做到
(4)谱聚类算法建立在谱图理论基础上,与传统的聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解
(5)谱聚类对相似度图的改变和聚类参数的选择非常的敏感;
(6)谱聚类适用于均衡分类问题,即各簇之间点的个数相差不大,对于簇之间点个数相差悬殊的聚类问题,谱聚类则不适用;
参考
谱聚类算法介绍
sklearn官网
聚类分析是一类将数据所对应的研究对象进行分类的统计方法。这一类方法的共同特点是,事先不知道类别的个数与结构;进行分析的数据是表明对象之间的相似性或相异性的数据,将这些数据看成对对象“距离”远近的一种度量,将距离近的对象归入一类,不同类对象之间的距离较远。
[if !supportLineBreakNewLine]
[endif]
聚类分析根据对象的不同分为Q型聚类分析和R型聚类分析,其中,Q型聚类是指对样本的聚类,R型聚类是指对变量的聚类。本节主要介绍Q型聚类。
一、距离和相似系数
1.1 、距离 在聚类过程中,相距较近的样本点倾向于归为一类,相距较远的样本点应归属于不同的类。最常用的是Minkowski距离。当各变量的单位不同或变异性相差很大时,不应直接采用Minkowski距离,而应先对各变量的数据做标准化处理,然后用标准化后的数据计算距离。使用SciPy库spatial模块下的distance子模块可以计算距离,使用该子模块下的pdist函数可以计算n维空间中观测值之间的距离,其语法格式如下:
获取更多知识,前往前往我的wx ————公z号 (程式解说)
原文来自 https:// https://mp.weixin.qq.com/s/ZB1V8NZHJLfKFgIJgiRxOw