聚类是一种广泛使用的无监督学习技术,用于将数据集中的对象分组,使得同一组内的对象比其他组的对象更为相似。MATLAB提供了多种工具和函数来实现和分析不同类型的聚类算法。
案例分析:使用K-均值聚类对数据进行分组
假设我们有一组二维数据,我们的任务是使用K-均值聚类算法将这些数据分组。
步骤 1: 生成模拟数据
首先,我们生成一些模拟数据,这些数据可以从几个不同的高斯分布中抽取,以模拟现实世界数据集中的群集。
% 生成三组数据
rng(1); % For reproducibility
data1 = mvnrnd([1 2], [0.5 0; 0 0.5], 100);
data2 = mvnrnd([5 5], [0.5 0; 0 0.5], 100);
data3 = mvnrnd([9 1], [0.5 0; 0 0.5], 100);
% 合并数据
data = [data1; data2; data3];
% 绘制原始数据
figure;
plot(data(:,1), data(:,2), 'ko');
title('Original Data');
xlabel('X1');
ylabel('X2');
步骤 2: 应用K-均值聚类
使用MATLAB的kmeans
函数来实现K-均值聚类。
% 设定聚类数
k = 3;
% 执行K-均值聚类
[idx, C] = kmeans(data, k);
% 绘制聚类结果
figure;
gscatter(data