利用k均值算法分类数据样本matlab代码
时间: 2023-07-05 07:28:37 浏览: 86
以下是利用k均值算法分类数据样本的一个简单的MATLAB代码示例:
```matlab
% 首先,我们生成一些随机的样本数据
data = [randn(100,2)*0.75+ones(100,2);
randn(100,2)*0.5-ones(100,2)];
% 然后,我们初始化k均值算法的参数
k = 2; % 聚类数
max_iter = 100; % 最大迭代次数
% 随机选择k个样本作为聚类中心
centroids = data(randperm(length(data),k),:);
% 开始迭代
for i = 1:max_iter
% 计算每个样本点与各个聚类中心的距离
distances = pdist2(data, centroids);
% 找到每个样本点距离最近的聚类中心,并分配到对应的簇
[~,labels] = min(distances,[],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), 'b');
scatter(centroids(:,1), centroids(:,2), 50, 'k', 'filled');
legend('Cluster 1', 'Cluster 2', 'Centroids');
```
在这个示例中,我们首先生成了一些随机的二维数据样本,然后使用k均值算法将这些样本分为两个簇。在迭代过程中,我们计算每个样本点与各个聚类中心的距离,找到每个样本点距离最近的聚类中心,并分配到对应的簇。然后,对每个簇重新计算聚类中心。最终,我们可视化了聚类结果,并用黑色实心圆表示聚类中心。
阅读全文