matlab 聚类分析kmeans和cluster的区别
发布网友
发布时间:2022-04-26 22:57
我来回答
共2个回答
热心网友
时间:2022-06-12 19:10
kmeans是K均值聚类
cluster是层次聚类
从总体思想上k均值是由上到下的,他是在你给定所分的类数后,保证这K类之间获得最大的划分。而层次聚类是由下到上的,它把每一个个元素视为一类,然后距离最短的两类合为一类,逐渐合并合所有元素并成一个大类。
K均值聚类保证了你所确定的K有着最好的划分效果,但是可能不符合数据自身分类特征,层次聚类的树状图能看到数据分类过程和分类距离,但是未必满足你所需要的K
热心网友
时间:2022-06-12 19:10
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
%随机获取150个点
X = [randn(50,2)+ones(50,2);randn(50,2)-ones(50,2);randn(50,2)+[ones(50,1),-ones(50,1)]];
opts = statset('Display','final');
%调用Kmeans函数
%X N*P的数据矩阵
%Idx N*1的向量,存储的是每个点的聚类标号
%Ctrs K*P的矩阵,存储的是K个聚类质心位置
%SumD 1*K的和向量,存储的是类间所有点与该类质心点距离之和
%D N*K的矩阵,存储的是每个点与所有质心的距离;
[Idx,Ctrs,SumD,D] = kmeans(X,3,'Replicates',3,'Options',opts);
%画出聚类为1的点。X(Idx==1,1),为第一类的样本的第一个坐标;X(Idx==1,2)为第二类的样本的第二个坐标
plot(X(Idx==1,1),X(Idx==1,2 www.hbbz08.com ),'r.','MarkerSize',14)
hold on
plot(X(Idx==2,1),X(Idx==2,2),'b.','MarkerSize',14)
hold on
plot(X(Idx==3,1),X(Idx==3,2),'g.','MarkerSize',14)
%绘出聚类中心点,kx表示是圆形
plot(Ctrs(:,1),Ctrs(:,2),'kx','MarkerSize',14,'LineWidth',4)
plot(Ctrs(:,1),Ctrs(:,2),'kx','MarkerSize',14,'LineWidth',4)
plot(Ctrs(:,1),Ctrs(:,2),'kx','MarkerSize',14,'LineWidth',4)
legend('Cluster 1','Cluster 2','Cluster 3','Centroids','Location','NW')
Ctrs