k means算法matlab分3类
时间: 2024-05-13 11:16:43 浏览: 4
下面给出使用Matlab实现k-means算法将数据分为3类的示例代码:
```matlab
% 随机生成100个二维数据点
data = rand(100,2);
% 设置要分的类别数
k = 3;
% 随机选取k个数据点作为初始的聚类中心
centroids = data(randperm(size(data,1),k),:);
% 迭代计算聚类中心
for i=1:20 % 迭代20次
% 计算每个数据点到每个聚类中心的距离
dists = pdist2(data, centroids);
% 找到每个数据点最近的聚类中心
[~, labels] = min(dists,[],2);
% 更新聚类中心
for j=1:k
centroids(j,:) = mean(data(labels==j,:));
end
end
% 绘制聚类结果
figure;
scatter(data(labels==1,1), data(labels==1,2), 'r'); hold on;
scatter(data(labels==2,1), data(labels==2,2), 'g'); hold on;
scatter(data(labels==3,1), data(labels==3,2), 'b'); hold on;
scatter(centroids(:,1), centroids(:,2), 'k', 'filled');
```
上述代码生成100个随机的二维数据点,然后使用k-means算法将这些数据点分为3类,并将结果可视化。由于k-means算法的结果与初始的聚类中心有关,所以每次运行结果可能略有不同。