kmeans聚类算法类内距离和类间距离求解的matlab代码
时间: 2024-02-12 19:00:55 浏览: 253
以下是使用Matlab实现K-means聚类算法并计算类内距离和类间距离的代码:
```matlab
% 假设数据集为X,聚类数为k
% X是一个m×n的矩阵,其中m是样本数,n是特征数
% Step 1: 初始化聚类中心
% 从数据集中随机选择k个样本作为初始聚类中心
centroids = X(randperm(size(X,1), k), :);
% Step 2: 迭代更新聚类中心和样本的类别
max_iters = 10; % 最大迭代次数
for iter = 1:max_iters
% 计算每个样本到聚类中心的距离
distances = pdist2(X, centroids);
% 将每个样本分配到距离最近的聚类中心
[~, labels] = min(distances, [], 2);
% 更新聚类中心为每个类别的样本均值
for i = 1:k
centroids(i, :) = mean(X(labels == i, :));
end
end
% Step 3: 计算类内距离和类间距离
intra_dist = 0; % 类内距离
inter_dist = 0; % 类间距离
for i = 1:k
% 计算类内距离
intra_dist = intra_dist + sum(pdist2(X(labels == i, :), centroids(i, :)));
% 计算类间距离
for j = i+1:k
inter_dist = inter_dist + norm(centroids(i, :) - centroids(j, :));
end
end
% 输出结果
disp(['类内距离: ', num2str(intra_dist)]);
disp(['类间距离: ', num2str(inter_dist)]);
```
阅读全文