matlab实现k-means聚类简单的案例分析
时间: 2024-11-25 21:15:02 浏览: 61
Matlab是一种强大的数值计算工具,尤其适合数据处理和机器学习任务,包括K-means聚类算法。下面是一个简单案例,展示如何在Matlab中使用K-means进行二维数据集的聚类:
```matlab
% 创建随机数据集(假设我们有100个样本,每个样本有两个特征)
data = rand(100, 2); % 生成100个点分布在2D空间
% 定义K值(比如我们将数据分为3簇)
K = 3;
% 初始化质心(可以选择随机的初始中心点)
Centroids = data(randperm(size(data, 1), K), :);
% 进行迭代直到收敛
while true
% 计算每个点到各个质心的距离,并将其归入最近的簇
distances = pdist2(data, Centroids);
[~, labels] = min(distances, [], 2); % labels存储每个点所属的簇编号
% 更新质心,取每个簇内所有点的均值作为新的质心位置
new_Centroids = mean(data(labels == eachCluster,:), 'all');
% 判断是否达到收敛条件,例如当质心不再改变或达到最大迭代次数
if norm(Centroids - new_Centroids) < tolerance || iteration >= max_iterations
break;
end
Centroids = new_Centroids;
iteration = iteration + 1;
end
% 可视化结果
scatter(data(:,1), data(:,2), 10, labels, 'filled');
hold on;
scatter(Centroids(:,1), Centroids(:,2), 50, 'k', 'filled'); % 显示最终质心
title('K-Means Clustering Result');
xlabel('Feature 1');
ylabel('Feature 2');
阅读全文