K-Means是一种聚类算法,与之前提到的朴素贝叶斯等算法不同,它属于无监督学习。无监督学习是什么意思呢?简单来说,之前的算法中我们是利用特征 x 和类别 y 来进行训练、分类的,而无监督学习是指不需要我们提供具体的类别 y ,而让数据自己聚在一起,形成 k 个簇,以实现分类的目的。
具体方法是通过对给定的样本进行划分,分为 k 个簇,使得簇内的点尽量紧密的连在一起,而簇间的距离尽量大,评判的标准就是通过欧氏距离。
主要包括两个步骤(首先初始化 k 个质心):
分别计算样本点与各个质心的距离,来判断样本归属于哪个簇;
寻找得到的簇的新质心,并更新。
重复循环上述两步,直到平均距离最小,即找到了最佳的质心以及簇的分类。