机器学习笔记-K-means算法

1、points：向量集合

2、kcentroids：初始k个类别的质心位置的集合

3、p：闵氏距离的计算参数，1就是manhattan距离，2就是欧式距离

def alg_kmeans(points, kcentroids, p):
assert(len(points) > 1);
assert(len(kcentroids) > 1);
assert(len(points[0]) == len(kcentroids[0]));

k = len(kcentroids);
# centroids for clusters, each centroid is a vector
centroids = kcentroids;
# clusters, set of point's index
c1 = [[] for row in range(k)];
c2 = [[] for row in range(k)];

change = True;
while change:
change = False;
# cluster once
c2 = PointstoCluster(points, centroids, p);
# if cluster change
change = (cmp(c1,c2) != 0);
# if not change, do again
if change:
c1 = c2;
# recalculate cluster centroids
centroids = RecalculateCentroids(points, centroids, c2);
return c2;

def PointstoCluster(points, kcentroids, p):
assert(len(points) > 1);
assert(len(kcentroids) > 1);
assert(len(points[0]) == len(kcentroids[0]));

k = len(kcentroids);
clusters = [[] for i in range(k)];

for i in range(len(points)):
# cal distance to each centroid
mindis = sys.float_info.max;
point = points[i];
clusteridx = -1;
for j in range(0, k):
dis = dis_minkowski(point, kcentroids[j], p);
if dis < mindis:
clusteridx = j;
mindis = dis;
clusters[clusteridx].append(i);

return clusters;

1、points：同上

2、k：类别数目

3、clusters：PointstoCluster的返回值

def RecalculateCentroids(points, k, clusters):
assert(len(points) > 1);
assert(k > 1);

dimention = len(points[0]);
centroids = [[0 for d in range(dimention)] for row in range(k)];
for i in range(k):
if len(clusters[i]) == 0:
continue;
for d in range(0, dimention):
centroids[i][d] = 0;
for pidx in clusters[i]:
centroids[i][d] += points[pidx][d];
centroids[i][d] /= len(clusters[i]);
return centroids;

• 本文已收录于以下专栏：

机器学习笔记-聚类分析之K-means算法案例及其Python实现

• lilu916
• 2017年06月10日 17:46
• 634

机器学习（十一）：K-Means算法

1. K-Means1.1 核函数的另一种观点之前我们提到过高斯核函数：K(x1,x2)=ϕ(x1)ϕ(x2)=exp(η||x1−x2||2)K(x_1,x_2)=\phi(x_1)\phi(x_2...

机器学习之k-means算法

K-means(k均值) 一、算法分析 K-means(k均值)是基于数据划分的无监督聚类算法，是数据挖掘领域的十大算法之一。样本集预先不知所属类别或标签，需要根据样本之间的距离或相似度来自动进行分类...

斯坦福大学机器学习——K-means算法

k-means通过设置重心和移动中心两个简答的步骤，就实现了数据的聚类。下面就来介绍下k-means算法。 一、   数值属性距离度量 度量数值属性相似度最简单的方法就是计算不同数值间的“距离”，如果...

机器学习--物以类聚（k-means算法）

k-means算法是无监督学习算法，没有标签值，通过自身分析自身的数据，自己进行分类。 此次实现参考了其他博客的实现。 k-means中k的意思表示的是分类数目。 数据集下载地址：链接：http://...
• Enche
• 2017年11月17日 21:45
• 45

机器学习之K-means算法（Python描述）基础

Python 2.7 IDE Pycharm 5.0.3 numpy 1.11.0 matplotlib 1.5.1可以扩展阅读： 1.(大)数据处理：从txt到数据可视化 2.机器学习之K...

机器学习实战ByMatlab（三）K-means算法

K-means算法属于无监督学习聚类算法，其计算步骤还是挺简单的，思想也挺容易理解，而且还可以在思想中体会到EM算法的思想。K-means 算法的优缺点： 1.优点：容易实现 2.缺点：可能...
• llp1992
• 2015年04月17日 13:31
• 5293

机器学习之K-means算法

K-means也是聚类算法中最简单的一种了，但是里面包含的思想却是不一般。最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中，那本书比较注重应用。看了Andrew Ng的这个讲义后才有些明白K-...

【机器学习】K-Means算法

1.引言有人认为k-means算法是由J.B.MacQueen在1967年提出的，也有人认为k-means聚类算法是由Steinhaus(1955)、Lloyd(1957)、Ball和Hall(196...

举报原因： 您举报文章：机器学习笔记-K-means算法 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)