kmeans聚类算法二维matlab代码
时间: 2023-09-11 08:06:35 浏览: 112
当然,我可以为您提供K-means聚类算法的二维MATLAB代码示例。以下是一个简单的示例:
```matlab
% 生成随机数据
data = [randn(100,2)+1.5; randn(100,2)-1.5];
% 设置聚类数目
k = 2;
% 初始化聚类中心
centers = datasample(data, k, 'Replace', false);
% 迭代更新聚类中心
prev_centers = zeros(size(centers));
while ~isequal(centers, prev_centers)
% 计算每个样本与聚类中心的距离
distances = pdist2(data, centers);
% 将每个样本分配到最近的聚类中心
[~, labels] = min(distances, [], 2);
% 更新聚类中心
prev_centers = centers;
for i = 1:k
centers(i,:) = mean(data(labels == i, :));
end
end
% 绘制结果
figure;
scatter(data(:,1), data(:,2), 10, labels, 'filled');
hold on;
scatter(centers(:,1), centers(:,2), 50, 'k', 'filled');
xlabel('X');
ylabel('Y');
legend('Cluster 1', 'Cluster 2', 'Centroids');
```
这段代码首先生成了一个二维随机数据集,然后设置了聚类数目 `k`。接下来,它会初始化聚类中心,并迭代地更新聚类中心,直到收敛。最后,将数据点和聚类中心可视化出来。
请注意,这只是一个简单的示例代码,可能无法处理所有情况。在实际使用中,您可能需要根据自己的数据和需求做一些调整和改进。希望对您有所帮助!如果您有任何其他问题,请随时提问。
阅读全文