用matlab实现质心算法
时间: 2023-10-13 12:14:47 浏览: 164
质心算法(K-means)是一种聚类算法,用于将数据点分成不同的类别。以下是使用MATLAB实现质心算法的示例代码:
```matlab
% 生成随机数据
data = rand(100,2);
% 设定聚类的数量
k = 3;
% 随机选取k个质心
centroids = data(randperm(size(data,1),k),:);
% 迭代次数
max_iter = 100;
% 开始迭代
for i = 1:max_iter
% 计算每个数据点到质心的距离
distances = pdist2(data,centroids,'euclidean');
% 找到每个数据点最近的质心,将其分到对应的类别中
[~,labels] = min(distances,[],2);
% 更新质心的位置
for j = 1:k
centroids(j,:) = mean(data(labels==j,:),1);
end
% 判断是否收敛
if i > 1
if isequal(labels,old_labels)
break;
end
end
% 保存上一次的类别
old_labels = labels;
end
% 可视化结果
scatter(data(:,1),data(:,2),10,labels,'filled');
```
在这个示例中,我们首先生成了100个二维随机数据点,然后将其分成了3个类别。接下来,我们随机选取了3个质心,并进行了最多100次的迭代。在每次迭代中,我们计算了每个数据点到质心的距离,并将其分到离它最近的质心所代表的类别中。然后,我们更新了每个类别的质心的位置。最后,我们将数据点可视化,并将其按照类别着色。
阅读全文