K-Means聚类
聚类算法概念:
聚类分析又称群分析,它是研究分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。聚类分析是由若干模式组成的,通常,模式是一个度量的向量,或者是多维空间中的一个点。聚类分析以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性。
通俗意义上,就是把一个未知分类的数据集合,根据我们的需求根据特征对其进行分类,方便我们进行批量处理和发现数据集合单元之间的相关性。
一个具有注脚的文本。1
K-Means算法的基本流程:
距离计算方法介绍
闵可夫斯基距离
d i s t ( X , Y ) = ∑ ∣ x i − y i ∣ p p dist(X,Y) = \sqrt[p]{\sum|x_i-y_i|^p} dist(X,Y)=p∑∣xi−yi∣p
01-曼哈顿距离(当p=1)
d i s t ( X , Y ) = ∑ ∣ x i − y i ∣ dist(X,Y) = {\sum|x_i-y_i|} dist(X,Y)=∑∣xi−yi∣
02-欧式距离(当p=2)
d i s t ( X , Y ) = ∑ ∣ x i − y i ∣ 2 2 dist(X,Y) = \sqrt[2]{\sum|x_i-y_i|^2} dist(X,Y)=2∑∣xi−yi∣2
03-切比雪夫距离(当p=无穷大)
d i s t ( X , Y ) = max ∑ ∣ x i − y i ∣ dist(X,Y) = \max{\sum|x_i-y_i|} dist(X,Y)=max∑∣xi−yi∣
在实际的应用过程中,选择欧式距离居多,平时我们计算两点之间的距离默认选用的也是欧式距离。
轮廓系数介绍
轮廓系数是用来评估聚类效果集中程度的指标,分类越集中,轮廓越清晰,则聚类效果越好,在视觉上,表现出高内聚,低耦合的状态:
1、不同分类之间的距离大
2、同一类内部距离小
轮廓系数计算公式:
S i l ( i ) = a i − b i m a x ( a i , b i ) \boxed{{Sil(i)= }{a_i-b_i \above {2pt} max(a_i,b_i)}} Sil(i)=max(ai,bi)ai−bi
K-means代码演示
## PART 01-无监督K-means聚类算法##假设没有target的情况下,对鸢尾花数据集进行分类#分类K值的确定:1、根据实际的业务需求进行分类;2、利用网格搜索的方法机器学习中K-means算法函数介绍:#sklearn.cluster.Kmeans(n_cluster=,init=)#n_cluster:开始聚类的数量#init:初始化的方法#labels:默认标记的类型##读取数据集import numpy as npimport pandas as pdfrom sklearn.datasets import load_irisiris=load_iris()##导入算法函数from sklearn.cluster import KMeansestimator=KMeans(n_clusters=3)estimator.fit(iris.data)##计算预测值y_predict=estimator.predict(iris.data)#模型评估#轮廓系数,越接近1,效果越好,越接近-1,效果越差from sklearn.metrics import silhouette_scorescore_sil=silhouette_score(iris.data,y_predict)print('该模型的轮廓系数为:',round(score_sil,2))
聚类结果:
用轮廓系数评估法评估结果为0.55,介于0-1之间,说明聚类效果较好,但是还有可以优化的空间。
[概念来源:百度百科] ↩︎