【每天一点算法】k-means聚类算法

该聚类算法的设计分为三大步:数据集准备;聚类中心设计与初始化;迭代训练;
其中迭代训练又分为两大步:聚类;聚类中心更新
下面是具体代码及其详解(实现语言为MATLAB或者Octave)注释为C/C++风格,复制的时候要改成matlab风格,或者直接删除

//prepare the data
x = [1 2 2 2 2 2 102 103 102 104 105 104 203 204 203 205 203 209 207 205];
//c是用来保存每一个x所属的类别的一个一维向量,所以它的维数和x是一样的
c = zeros(size(x));
//Random initialize K cluster centroids m;
m = [2 5 200];

N = input('Enter your times to iterate:');
for k = 1:N//iterate
	for i = 1:size(x, 2)//cluster
		min = abs(x(i) - m(1));
		c(i) = 1;
		for j = 2:size(m, 2)
			if abs(x(i) - m(j)) < min
				min = abs(x(i) - m(j));
				c(i) = j;
			end
		end
	end//cluster end

	for i = 1:size(m, 2)//clustering center update
		m(i) = mean(x(find(c == i)));
	end//clustering center update end
end//iterate end

代码写得很清楚,应该不用解释了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值