k-mean 聚类并且绘制聚类树的matlab代码
时间: 2024-04-16 14:28:57 浏览: 18
下面是使用 MATLAB 实现 k-means 聚类并绘制聚类树的示例代码:
```matlab
% 假设你有一个数据集 X,其中每行表示一个样本,每列代表一个特征
% 假设你希望将数据分为 k 个簇
% 设置参数
k = 3; % 要分成的簇的数量
max_iters = 10; % 最大迭代次数
% 随机初始化聚类中心
centroids = X(randperm(size(X,1), k), :);
% 初始化变量
previous_centroids = centroids;
idx = zeros(size(X,1), 1);
% 迭代更新聚类中心
for iter = 1:max_iters
% 将每个样本分配到最近的聚类中心
for i = 1:size(X,1)
distances = sum((X(i,:) - centroids).^2, 2);
[~, idx(i)] = min(distances);
end
% 更新聚类中心
for j = 1:k
centroids(j,:) = mean(X(idx==j,:), 1);
end
% 检查聚类中心是否收敛
if isequal(previous_centroids, centroids)
break;
end
previous_centroids = centroids;
end
% 绘制聚类树
dendrogram(linkage(X, 'centroid'), k);
```
上面的代码首先随机初始化聚类中心,然后通过迭代的方式将每个样本分配到最近的聚类中心,并更新聚类中心。最后,使用 `dendrogram` 函数绘制聚类树。请确保你的数据集 X 已经定义并包含了你的数据。你可以根据需要调整代码中的参数。