k-means聚类算法matlab代码
时间: 2023-06-29 18:04:27 浏览: 70
以下是K-means聚类算法的Matlab代码示例:
```matlab
%数据集
data = [2.0, 3.0; 2.1, 2.9; 1.6, 2.8; 1.9, 3.2; 1.5, 3.0; 3.0, 1.0; 3.2, 0.8; 3.5, 1.0; 3.1, 1.5; 3.3, 1.8];
%设置聚类数目
k = 2;
%随机初始化聚类中心
center = datasample(data, k, 'Replace', false);
%重复迭代过程,直到聚类中心不再变化
while true
%分配数据点到最近的聚类中心
dist = pdist2(data, center);
[~, idx] = min(dist, [], 2);
%重新计算聚类中心
new_center = zeros(k, size(data, 2));
for i = 1:k
new_center(i, :) = mean(data(idx == i, :), 1);
end
%如果聚类中心不再变化,则结束迭代
if isequal(center, new_center)
break;
end
%更新聚类中心
center = new_center;
end
%显示聚类结果
figure;
gscatter(data(:, 1), data(:, 2), idx);
hold on;
plot(center(:, 1), center(:, 2), 'k*', 'MarkerSize', 10);
title('K-means Clustering');
xlabel('Feature 1');
ylabel('Feature 2');
```
在代码中,首先定义了数据集和聚类数目。然后,使用`datasample`函数随机初始化聚类中心。接着,使用循环迭代的方式,将数据点分配到最近的聚类中心,并重新计算聚类中心。如果聚类中心不再变化,则结束迭代。最后,使用`gscatter`函数显示聚类结果。
需要注意的是,K-means聚类算法对初始聚类中心的选择非常敏感。为了避免局部最优解,可以多次运行算法并选择最优的聚类结果。
阅读全文