已知有样本点的横纵坐标分别如下: x1 = 0.5660 0.6294 0.5315 0.5860 0.5129 0.5017 0.7854 0.6011 0.6505 0.7938 0.9977 0.6802 0.4088 0.0849 0.2912 0.0147 0.0773 0.1329 y1 = 0.5769 1.2209 1.2649 1.1579 1.3104 0.8742 0.3062 0.3707 0.7067 0.1684 0.8137 0.4662 0.2223 0.4949 -0.1375 0.2308 0.1497 0.1813利用k均值算法分类上述数据样本给出matlab代码
时间: 2024-02-10 10:08:16 浏览: 16
以下是利用k均值算法分类上述数据样本的MATLAB代码:
```matlab
% 将样本数据转换为矩阵形式
X = [x1', y1'];
% 初始化k均值算法的参数
k = 2; % 聚类数
max_iter = 100; % 最大迭代次数
% 随机选择k个样本作为聚类中心
centroids = X(randperm(length(X),k),:);
% 开始迭代
for i = 1:max_iter
% 计算每个样本点与各个聚类中心的距离
distances = pdist2(X, centroids);
% 找到每个样本点距离最近的聚类中心,并分配到对应的簇
[~,labels] = min(distances,[],2);
% 对每个簇重新计算聚类中心
for j = 1:k
centroids(j,:) = mean(X(labels == j,:));
end
end
% 可视化聚类结果
figure;
scatter(X(labels == 1,1), X(labels == 1,2), 'r');
hold on;
scatter(X(labels == 2,1), X(labels == 2,2), 'b');
scatter(centroids(:,1), centroids(:,2), 50, 'k', 'filled');
legend('Cluster 1', 'Cluster 2', 'Centroids');
```
在这个示例中,我们将样本数据转换为矩阵形式,并使用k均值算法将这些样本分为两个簇。在迭代过程中,我们计算每个样本点与各个聚类中心的距离,找到每个样本点距离最近的聚类中心,并分配到对应的簇。然后,对每个簇重新计算聚类中心。最终,我们可视化了聚类结果,并用黑色实心圆表示聚类中心。