k-means算法伪代码python_机器学习算法-KMeans聚类算法解析及伪代码实现。

机器学习算法-KMeans聚类算法解析及伪代码实现。

徐小狗在文末附上了几条大神们关于KMeans聚类算法的博文,欲详细研究请前往浏览~

作为初学者,许多地方可能笨拙或有误,希望有大神看到后给予优化和指点!~

Why – KMeans:现实中的聚类分析问题 – 总统大选

假设 M 国又开始全民选举总统了,目前 Mr.OBM 的投票率为48%(投票数占所有选民人数的百分比),而 Mr.MKN 的为47%,而剩下的一部分出于【种种原因】没有投票。

做为其中某个阵营的人,自然是希望能够尽可能的争取到这些剩余的票 -因为这完全可能影响最终选举结果。

然而,你不可能争取到这些人的所有投票,因为你满足某个群体的人,也许就伤害到了另一群人的利益。

一个很不错的想法是将这些人分为 K 个群体,然后主要对其中人数最多的几个群体做工作。

这就需要使用到聚类的策略了。

聚类策略是搜集剩余选民的用户信息(各种满意/不满意的信息),将这些信息输入进聚类算法,然后对聚类结果中人数最多的簇的选民做思想工作。

可能你会发现某个簇的选民都是一个社区的,一个宗教信仰的,或者具有某些共性。这样就方便各种各样的拉票活动了。

What – KMeans聚类算法:

聚类:给事物打标签,寻找同一组内的个体之间的一些潜在的相似模式,力图找到数据的自然分组。

聚类是一种无监督的机器学习任务,它可以自动将数据划分成类。

因此聚类分组不需要提前被告知组应该是什么样的(比如总统大选的例子),因为我们甚至都不知道我们在寻找什么,所以聚类是应用于知识探索而不是预测。

KMeans聚类算法思想:以空间中K个点为中心进行聚类,对最靠近他们的对象归类,通过迭代,逐次更新各聚类中心的值,直到最好的聚类结果。

How – KMeans聚类算法:

KMeans聚类算法流程:

k-means算法伪代码python_机器学习算法-KMeans聚类算法解析及伪代码实现。_第1张图片

KMeans聚类算法缺点:

1.初始选择中心点的位置是随机的,不同的随机初始中心点会有不同的迭代次数,有时候会计算很多次,而且结果也会不同;

2.KMeans需要人为的确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果;

3.聚类中心的个数K需要事先给定,但在实际中这个K值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才合适;

KMeans聚类算法优化:KMenas++算法

KMeans++算法思想:

1.假设分为K类;

2.从输入的数据点集合中随机选择一个点作为第一个聚类中心;

3.对于数据集中的每一个点x,计算其与最近的聚类中心(指已选择的聚类中心)的距离D(x);

4.选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点被选取为聚类中心的概率较大;

5.重复3和4两个步骤直到K个聚类中心被选出来;

6.利用这K个初始的聚类中心运行标准的K-Means算法;

简单来说就是选择中心点时各中心点的距离要做到尽可能的远。

KMeans聚类算法伪代码实现:

简单的伪代码实现:

选择K个点作为初始质心

repeat

将每个点指派到最近的质心,形成K个簇

重新计算每个簇的质心

until 簇不发生变化或达到最大迭代次数

详细的伪代码实现:

创建 k 个点作为起始质心 (随机选择):

当任意一个点的簇分配结果发生改变的时候:

对数据集中的每个数据点:

对每个质心:

计算质心与数据点之间的距离

将数据点分配到距其最近的簇

对每一个簇:

求出均值并将其更新为质心

大神的KMeans剖析博文分享:

你可能感兴趣的:(k-means算法伪代码python_机器学习算法-KMeans聚类算法解析及伪代码实现。)