聚类算法matlab代码
时间: 2023-06-29 10:18:23 浏览: 49
以下是一个基于k-means聚类算法的Matlab代码示例:
```matlab
% 生成测试数据
data = [randn(100,2)*0.75+ones(100,2);
randn(100,2)*0.5-ones(100,2)];
% 设置聚类数目
k = 2;
% 初始化质心
centroids = rand(k,2)*10-5;
% 迭代次数
max_iters = 10;
% 开始迭代
for i=1:max_iters
% 计算每个点所属的簇
C = zeros(size(data,1), 1);
for j=1:size(data,1)
distances = sqrt(sum(bsxfun(@minus, centroids, data(j,:)).^2,2));
[~, idx] = min(distances);
C(j) = idx;
end
% 更新质心位置
for j=1:k
centroids(j,:) = mean(data(C==j,:));
end
end
% 可视化结果
figure;
hold on;
colors = 'rgbkymc';
for i=1:k
plot(data(C==i,1),data(C==i,2),[colors(i) 'o']);
plot(centroids(i,1),centroids(i,2),'kx','MarkerSize',12,'LineWidth',2);
end
hold off;
```
该代码通过生成一些随机数据并使用k-means聚类算法将其分为两个簇。在迭代过程中,代码计算每个点所属的簇,并更新质心位置。最后,代码将结果可视化为散点图,并用黑色叉号标记聚类中心。