执行 k 均值聚类
使用三种分布生成训练数据集。
rng('default') % For reproducibility
X = [randn(100,2)*0.75+ones(100,2);
randn(100,2)*0.5-ones(100,2);
randn(100,2)*0.75];
使用 kmeans 将训练数据分成三个簇。
[idx,C] = kmeans(X,3);
绘制簇和簇质心。
figure
gscatter(X(:,1),X(:,2),idx,'bgm')
hold on
plot(C(:,1),C(:,2),'kx')
legend('Cluster 1','Cluster 2','Cluster 3','Cluster Centroid')
将新数据分配给现有簇
生成测试数据集。
Xtest = [randn(10,2)*0.75+ones(10,2);
randn(10,2)*0.5-ones(10,2);
randn(10,2)*0.75];
使用现有簇对测试数据集进行分类。使用 pdist2 找到距离每个测试数据点最近的质心。
[~,idx_test] = pdist2(C,Xtest,'euclidean','Small