K-Means算法实例:
本文的是上一篇的实例部分
以下代码均是在Matlab中实现。
1.初始化中心点
function centroids = kMeansInitCentroids(X, K)
centroids = zeros(K, size(X, 2));% 初始化centroids为一个K by n 的矩阵
m = size(X,1);
rands = randperm(m,K);% 从1到m中随机选取K个数
centroids = X(rands,:);% 从X中,选取K个点作为初始中心点
end
randperm的用法,戳此处
2.计算最近的中心点
function idx = findClosestCentroids(X, centroids)
K = size(centroids, 1);
idx = zeros(size(X,1), 1);%idx 就是前面说到的c(i) m by 1
m = size(X,1);
for i = 1:m;% 对所有点进行遍历,计算时采用矩阵形式比较方便
subs = centroids - X(i,:);% 一个点到到三个中心点的向量
distance2 = sum(subs.^2,2);%计算这三个向量模长的平方
[temp,idx(i)]