简介

K-means算法又名K-均值算法,对错监督学习的聚类算法。

广东金融学院肇庆校区?广东金融学院肇庆校区

底子思想

在K-means算法,用cluster来表明簇,K-means算法收敛等同于一切质心不再发改变。底子的k-means算法流程如下:

港币今天汇率?港币今天汇率

取k个初始质心(作为初始cluster,每个初始cluster只包括一个点);\nrepeat:\n 对每个样本点,核算得到间隔其最近的质心,将其类别标为该质心所对应的cluster;\n 从头核算k个cluster对应的质心(质心是cluster样本点的均值);\nutil 质心不再发改变 或 抵达迭代次数\n

西王食物股吧,西王食物股吧

K-means的实质是移动心点,使其逐步接近数据“心”,即最小化方针函数,方针函数为每个点到其簇质心的间隔平方和:

000767漳泽电力?000767漳泽电力

方针函数

其,N是元素个数,x表明元素,c表明第j簇的质心。

优缺陷

长处

简略、速;对大数据集有较高的功率并且是可伸缩性的;间复杂度接近于线性,适发掘大规模数据集。

缺陷

仅仅部分,因而对初始质心的取很灵敏;择能到达方针函数的K值对错常困难的。Python完成

首要,咱们需求编写几个辅佐函数:

加载测试数据集

加载测试数据集

核算欧拉间隔(这儿取欧拉间隔作为间隔核算公式)

核算欧拉间隔

初始化k个随机簇心

初始化k个随机簇心

有了以上辅佐函数后,咱们就能够根据K-means的底子思想与算法进程完成K-means算法了。

K-means中心算法

至此,K-means算法的Python完成就现已完成了。咱们能够加载一组测试数据,指定簇心个数,运用K-means算法进行聚类。

随机初始化

因为初始化的心点关于最终的类成果影响很大,因而很简单出现:当初始化的心点不同,其成果或许千差万别。因而为了类成果愈加理,咱们能够屡次初始化心点,即屡次运转K-means算法,然后取Cost最小的类成果。

二K-means

为了战胜K-means算法收敛域部分最小值的问题(对初始簇心的方位灵敏),二K-means出现了。该算法首要将一切点归于一个簇,然后将其为二。之后择其一个簇持续为二。择的根据便是:该簇的划是否能够程度下降SSE(差错平方和)的值。上述根据SSE的划进程不断重复,直至簇数到达k停止。

将一切点当作一个簇\n当簇数目小于k:\n 关于每一个簇:\n 核算总差错\n 在给定的簇上面进行K-means聚类(k=2)\n 核算将该簇为二之后的总差错\n 择使得差错最小的那个簇进行划操作\n

K的择Elbow method

假定跟着K的增大,cost function j的出现以下形状:

cost function j

能够看到,当K=3,J现已很小了,再增大K并不能大大减小J。阐明此K=3比较适。

可是,以上状况并不常见,更一般的状况是:

更一般的cost function j

此底子看不出哪里才是”手肘“,所以对此只能实践调研,按实践需求而定。