kmeans matlab完整代码
时间: 2023-11-03 07:56:49 浏览: 75
当然,下面是一个简单的K-means聚类的完整MATLAB代码示例:
```matlab
% 生成随机数据
data = randn(100, 2);
% 设置聚类数量
k = 3;
% 初始化聚类中心
centroids = datasample(data, k, 'Replace', false);
% 迭代次数
maxIter = 100;
% 初始化聚类结果
clusterAssignments = zeros(size(data, 1), 1);
for iter = 1:maxIter
% 计算样本点到聚类中心的距离
distances = pdist2(data, centroids);
% 将样本点分配到距离最近的聚类中心
[~, clusterAssignments] = min(distances, [], 2);
% 更新聚类中心
for i = 1:k
centroids(i, :) = mean(data(clusterAssignments == i, :), 1);
end
end
% 绘制聚类结果
figure;
gscatter(data(:, 1), data(:, 2), clusterAssignments);
hold on;
plot(centroids(:, 1), centroids(:, 2), 'k*', 'MarkerSize', 10);
hold off;
```
在这个示例中,我们首先生成了一个包含随机数据的矩阵。然后我们设置了聚类的数量 `k`,初始化了聚类中心 `centroids`,并设置了最大迭代次数 `maxIter`。接下来,我们使用一个循环来进行K-means聚类的迭代过程,直到达到最大迭代次数。
在每次迭代中,我们计算了样本点到聚类中心的距离,并将样本点分配到距离最近的聚类中心。然后更新聚类中心为每个聚类的平均值。最后,我们绘制了聚类结果,用不同的颜色表示不同的聚类,并用星号表示聚类中心。
请注意,这只是一个简单的K-means聚类的示例,实际应用中可能需要根据具体问题进行修改和优化。希望对你有帮助!
阅读全文