聚类算法之K均值算法(k-means)的Python实现

Python016

聚类算法之K均值算法(k-means)的Python实现,第1张

K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。

通常,人们根据样本间的某种距离或者相似性来定义聚类,即把相似的(或距离近的)样本聚为同一类,而把不相似的(或距离远的)样本归在其他类。

所谓聚类问题,就是给定一个元素集合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