k均值聚类算法优缺点_K-均值聚类算法(K-Means)

K-means是一种无监督学习,对未标记的数据(即没有定义类别或组的数据)进行分类。 该算法的目标是在数据中找到由变量K标记的组。该算法迭代地工作基于所提供的特征,将每个数据点分配给K个组中的一个。 基于特征相似性对数据点进行聚类。 K均值聚类算法的结果是:

1.K簇的质心,可用于标记新数据

2.训练数据的标签(每个数据点分配给一个集群)

一、k-means简述

1、聚类

“类”指的是具有相似性的集合,聚类是指将数据集划分为若干类,使得各个类之内的数据最为相似,而各个类之间的数据相似度差别尽可能的大。对数据集进行聚类划分,属于无监督学习。聚类分析就是以相似性为基础,在一个聚类中的模式之间比不在同一个聚类中的模式之间具有更多的相似性。

2、K-Means

对样本集D = {x1,x2,…,xm}.K-Means算法就是针对聚类划分C = {C1,C2,…,Ck}最小化平方误差;

7b2c1b1c5792cb05306e7999d690b2a4.png

其中

9a7959d06f7b623315f43f1adeb220c7.png

是是簇Ci的均值向量。从上述公式中可以看出,该公式刻画了簇内样本围绕簇均值向量的紧密程度,E值越小簇内样本的相似度越高。

结合最小二乘法和拉格朗日原理,聚类中心为对应类别中各数据点的平均值,同时为了使算法收敛,在迭代的过程中,应使得最终的聚类中心尽可能的不变。

三、工作流程

随机选取K个样本作为聚类中心;

计算各样本与各个聚类中心的距离;

将各样本回归于与之距离最近的聚类中心;

求各个类的样本的均值,作为新的聚类中心;

判定:若类中心不再发生变动或者达到迭代次数,算法结束,否则回到第二步。

四、k-means算法的描述如下

当任意一个点的簇分配结果发生改变时,对数据集中的每个点,对每个质心,计算质心与数据点之间的距离将数据点分配到距离其最近的簇对每一个簇,计算簇中所有点的均值并将均值作为质心。

二、wine数据集的红酒K-Means聚类

导入数据

3e8c18caea729273f67ac5fb8449e9f8.png

数据预处理

312e1afef9ed782ab64b5c99b0da0438.png

数据聚类

9dacc7118028335b0b15e8b696b0fc54.png

(1)对比真实标签和聚类标签求取FMI

d2b62ebcbd6c235ff5c2023eacdf6036.png

(2)在聚类数目为2~10类时,确定最优聚类数目

718fab648a211e4f3076da6796bf7d6b.png

数据越接近1更好所以由上图可得聚类最优为3类,与k-means聚类结果相同