k-means代码matlab
时间: 2023-08-29 15:05:42 浏览: 83
以下是一个简单的k-means算法的Matlab代码示例:
```matlab
% 生成随机数据
data = rand(100,2);
% 设定聚类数目
k = 3;
% 随机初始化中心点
centroids = data(randperm(size(data,1),k),:);
% 初始化聚类分配
cluster_assignments = zeros(size(data,1),1);
% 迭代聚类
for i=1:10 % 设定迭代次数
% 计算每个数据点到每个中心点的距离
distances = pdist2(data,centroids);
% 分配每个数据点到最近的中心点
[~,cluster_assignments] = min(distances,[],2);
% 更新中心点位置
for j=1:k
centroids(j,:) = mean(data(cluster_assignments==j,:),1);
end
end
% 可视化结果
scatter(data(:,1),data(:,2),[],cluster_assignments)
```
在这个简单的示例中,我们生成了一个包含100个随机数据点的矩阵,并使用k-means算法将其聚类为3个集群。我们使用randperm函数来随机初始化中心点,并使用pdist2函数计算每个数据点到每个中心点的距离。然后,我们分配每个数据点到最近的中心点,并更新中心点位置,直到达到指定的迭代次数。最后,我们使用scatter函数将聚类分配可视化。
阅读全文