多种聚类方法实验(matlab)

1.代码

% 加载 fisheriris 数据集  
load fisheriris  
  
% 提取特征  
meas = meas;  
  
% K-Means 算法  
k = 3;  
[idx_kmeans, C_kmeans] = kmeans(meas, k);  
visualizeClusters(meas, idx_kmeans, C_kmeans, 'K-Means');  
  
% K-Means++ 初始化  
opts = statset('Display','iter');  
[idx_kmeanspp, C_kmeanspp] = kmeans(meas, k, 'Options', opts, 'Start', 'plus');  
visualizeClusters(meas, idx_kmeanspp, C_kmeanspp, 'K-Means++');  
  
% Gaussian Mixture Model (GMM)  
gm = fitgmdist(meas, k);  
idx_gmm = cluster(gm, meas);  
C_gmm = gm.mu;  
visualizeClusters(meas, idx_gmm, C_gmm, 'GMM');  
  
% 层次聚类(使用 'linkage')  
Z = linkage(meas,  'average');  
dendrogram(Z);  
title('Hierarchical Clustering Dendrogram');  
xlabel('Sample index');  
ylabel('Distance');  
  
% 使用 'cluster' 函数从层次聚类中提取 k 个聚类  
idx_hierarchical = cluster(Z, k);  
C_hierarchical = arrayfun(@(n) mean(meas(idx_hierarchical == n, :), 1), 1:k, 'UniformOutput', false);  
visualizeClusters(meas, idx_hierarchical, vertcat(C_hierarchical{:}), 'Hierarchical Clustering');  
  
% 可视化函数  
function visualizeClusters(data, idx, centers, titleStr)  
    figure;  
    gscatter(data(:,1), data(:,2), idx);  
    hold on;  
    plot(centers(:,1), centers(:,2), 'kx', 'MarkerSize', 15, 'LineWidth', 3);  
    hold off;  
    xlabel('Feature 1');  
    ylabel('Feature 2');  
    title(titleStr);  
end  
  
% 注意:对于 DBSCAN、BIRCH、FCM、ISODATA、canopy、kshape、谱聚类和图团体检测等方法  
% MATLAB 可能没有直接内置的函数。你可能需要查找第三方实现或使用其他工具包,  
% 或者自行实现这些算法。这些高级聚类方法的实现通常比较复杂,超出了简单示例代码的范围。

2.运行结果

4b34df1180f4440fbbfdc37c1e5f4576.png

图2-1

  iter	 phase	     num	         sum
     1	     1	     150	     122.183
     2	     1	       9	     103.215
     3	     1	      10	     90.9739
     4	     1	      11	     81.1761
     5	     1	       3	     79.5415
     6	     1	       3	     78.8514
距离的最佳总和 = 78.8514

b1648a1969aa45aab62ca115d40e6675.png

图2-2

e433e78a54e2436683a9865b43f52466.png

图2-3

0de80018d4634c1da93132e5183d6e6a.png

图2-4

 

2c94926510164b90b0bc2d6250cac7d4.png

图2-5

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值