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 =最大迭代次数; % 初始化clct timecluster_centerbest_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;boxtitle('蚁群聚类结果(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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。