数据挖掘-聚类分析(Python实现K-Means算法)
Posted 蜘蛛侠不会飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘-聚类分析(Python实现K-Means算法)相关的知识,希望对你有一定的参考价值。
概念:
聚类分析(cluster analysis ):是一组将研究对象分为相对同质的群组(clusters)的统计分析技术。聚类分析也叫分类分析,或者数值分类。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或者相似度将其划分成若干个组,划分的原则是组内距离最小化而组间(外部)距离最大化。聚类和分类的不同在于:聚类所要求划分的类是未知的。
聚类度量的方法:分距离和相似度来度量。
聚类研究分析的方法:
1.层次的方法(hierarchical method)
2.划分方法(partitioning method)
3.基于密度的方法(density-based method)DBSCAN
4.基于网格的方法(grid-based method)
5.基于模型的方法(model-based method)
?K-Means 算法:
?受离群点的影响较大,由于其迭代每次的中心点到全部样本点的距离和的平均值。
优点:
- 原理简单
- 速度快
- 对大数据集有比较好的伸缩性
缺点:
- 需要指定聚类 数量K
- 对异常值敏感
- 对初始值敏感
?以欧式距离来衡量距离大小,使用误差平方和(Sum of the Squared Error,SSE)作为聚类的目标函数:
k表示k个聚类中心,ci表示第几个中心,dist表示的是欧几里得距离
?算法步骤;
?创建k个点作为初始的质心点(随机选择)
?当任意一个点的簇分配结果发生改变时
? 对数据集中的每一个数据点
? 对每一个质心
? 计算质心与数据点的距离
? 将数据点分配到距离最近的簇
? 对每一个簇,计算簇中所有点的均值,并将均值作为质心
?算法图示:
Python代码实现K-Means算法:
有关于 .A 的用法:(flatten()函数可以是多维数组变换成一维数组, .A 则使得matrix 形式转化成 array 形式)
#定义一个欧式距离的函数 :
随机设置k个中心点:
定义KMeans函数:
python中kmeans的参数:
?基于密度的方法;
?DBSCAN (需要指定半径,对离群点的寻找作用很大):
?大圆:核心对象,周围半径内有多于min_samples 个点
?小圆:非核心对象,周围少于 min_samples 个点
?黑色点:离群点和任何核心对象之间的距离大于阈值
参考:https://blog.csdn.net/taoyanqi8932/article/details/53727841
以上是关于数据挖掘-聚类分析(Python实现K-Means算法)的主要内容,如果未能解决你的问题,请参考以下文章
k-means聚类分析 python 代码实现(不使用现成聚类库)