1 简介
随着计算机的飞速发展,各个领域都产生了大量的数据,如何从海量的数据中找出需要的信息和有用的知识,成为社会中越来越关注的问题。经过众多专家学者的努力研究,一门新兴的学科----数据挖掘技术逐步的被用于海量数据的处理。从而有效的解决了“数据爆炸却知识贫乏”的问题。而作为数据挖掘技术之一的聚类分析也越来越受到研究者的关注,它既可用于独立数据的挖掘工具,也可用于其它数据挖掘的预处理步骤,颇具有研究价值。随着群体智能研究的不断深入,Deneubourg等人通过观察现实中蚂蚁堆积尸体和分类它们的幼体等自然行为,模拟蚂蚁的觅食活动,提出了蚁群算法的概念,并将蚁群算法引入到聚类分析中,从此开始了基于蚁群算法的聚类研究与应用。
2 部分代码
clc;
clf;
clear;
% X = 测试样本矩阵;
% X = load('data.txt');
X=[
2232.43 3077.87 1298.87;
1580.1 1752.07 2463.04;
1962.4 1594.97 1835.95;
1495.18 1957.44 3498.02;
1125.17 1594.39 2937.73;
24.22 3447.31 2145.01;
1269.07 1910.72 2701.97;
1802.07 1725.81 1966.35;
1817.36 1927.4 2328.79;
1860.45 1782.88 1875.13;
1237.91 2055.13 3405.09;
688.94 2104.72 3198.51;
1675.65 1747.23 1580.39;
1806.02 1810.19 2191.12;
74.56 3288.02 2433.87;
307.35 3363.84 2021.61;
1988.27 1657.51 2069.2;
2173.92 2608.55 1803.57;
372.16 3077.44 2163.46;
576.6 2140.98 3320;
1724.13 1704.49 1798.75;
2501.21 2652.65 984.56;
1656.94 1913.34 2459.07;
362.51 3150.03 2472;
565.74 2284.97 3024.58;
1978.06 1536.13 2375.64;
1661.06 1552.4 2005.05;
790.29 2419.98 3051.16;
1557.27 1746.27 1879.13;
2793.36 3009.26 1073.55;
1766.08 1803.14 1895.18;
1207.88 1600.62 3123.07;
245.75 3373.67 2248.45;
2785.36 3052.81 1035.65;
315.42 3088.29 2187.12;
1243.28 2451.72 3111.99;
829.84 1555.91 3139.21;
1347.07 2364.31 3096.88;
1926.98 1507.34 1626.47;
1808.57 1608.78 1565.95;
1124.1 1840.98 2819.41;
2661 3302.39 1710.32;
1805.55 1899.09 2400.6;
1130.18 1902.42 2753.7;
1355.19 1566.16 2927.81;
1651.14 1774.03 1725.56;
2110.63 3308.04 702.06;
2788.11 3395.23 1684.45;
1807.61 1680.56 2356.65;
1363.58 1729.44 2749.55;
1992.42 1526.9 1581.42;
]
[N,n]=size(X); % N =测试样本数;n =测试样本的属性数;
K = 4; % K = 组数;
R = 100; % R = 蚂蚁数;
t_max = 1000; % t_max =最大迭代次数;
% 初始化
clc
t
time
cluster_center
best_solution = solution_ascend(1,1:end-1);
IDY=ctranspose(best_solution)
best_solution_function_value = solution_ascend(1,end)
%分类结果显示
plot3(cluster_center(:,1),cluster_center(:,2),cluster_center(:,3),'o');grid;box
title('蚁群聚类结果(R=100,t=10000)')
xlabel('X')
ylabel('Y')
zlabel('Z')
YY=[1 2 3 4];
index1 = find(YY(1) == best_solution)
index2 = find(YY(2) == best_solution)
index3 = find(YY(3) == best_solution)
index4 = find(YY(4) == best_solution)
line(X(index1,1),X(index1,2),X(index1,3),'linestyle','none','marker','*','color','g');
line(X(index2,1),X(index2,2),X(index2,3),'linestyle','none','marker','*','color','r');
line(X(index3,1),X(index3,2),X(index3,3),'linestyle','none','marker','+','color','b');
line(X(index4,1),X(index4,2),X(index4,3),'linestyle','none','marker','s','color','b');
rotate3d
3 仿真结果
4 参考文献
[1]耿德生. 基于蚁群算法的聚类研究与应用[D]. 山西大学, 2011.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。