虹膜数据的模糊c均值聚类
这个例子展示了如何对虹膜数据集使用模糊c均值聚类。这个数据集是由植物学家埃德加·安德森收集的,包含了三种鸢尾花的随机样本:setosa,多色的,virginica.对于每个物种,数据集包含50个萼片长度,萼片宽度,花瓣长度和花瓣宽度的观测值。
加载数据
方法加载数据集iris.dat
数据文件。
负载iris.dat
将数据划分为三个组,命名为setosa
,多色的
,virginica
.
setosaIndex =虹膜(:,5)==1;versicolorIndex =虹膜(:,5)==2;virginicaIndex =虹膜(:,5)==3;setosa =虹膜(setosaIndex,:);versicolor =虹膜(versicolorIndex,:);virginica =虹膜(virginicaIndex,:);
绘制二维数据图
虹膜数据包含四个维度,分别表示萼片长度、萼片宽度、花瓣长度和花瓣宽度。为两个维度的每个组合绘制数据点。
特征= {“花萼长度”,萼片宽的,...“花瓣长度”,“花瓣宽度”};配对= [1 2;1 3;1 - 4;2 3;2 - 4;3 4];为I = 1:6 x = pairs(I,1);Y = pairs(i,2);次要情节(2、3、我)情节([setosa (:, x)多色的(:,x) virginica (:, x)),...[setosa(:,y) versicolor(:,y) virginica(:,y)],“。”xlabel(特征{x}) ylabel(特征{y})结束
设置参数
指定使用模糊c均值聚类对数据进行聚类的选项。这些选项是:
数控
-集群数量M -模糊划分矩阵指数,表示聚类之间的模糊重叠程度。有关更多信息,请参见模糊c均值聚类中模糊重叠的调整.
麦克斯特
-最大迭代次数。聚类过程在此迭代次数之后停止。minImprove
-最低限度的改进。当连续两次迭代之间的目标函数改进值小于此值时,聚类过程停止。
Nc = 3;M = 2.0;maxIter = 100;minImprove = 1e-6;
有关这些选项和模糊c均值算法的更多信息,请参见fcm
.
计算集群
模糊c均值聚类是一个迭代过程。最初,fcm
函数生成一个随机模糊划分矩阵。这个矩阵表示每个簇中每个数据点的隶属度。
在每次聚类迭代中,fcm
计算聚类中心,并根据计算出的中心位置更新模糊划分矩阵。然后计算目标函数值。
聚类数据,每次迭代后显示目标函数值。
clusteringOptions = [M maxIter minImprove true];[centers,U] = fcm(虹膜,Nc,clusteringOptions);
迭代计数= 1,obj。fcn = 28838.424340迭代计数= 2,obj。fcn = 21010.880067迭代计数= 3,obj。fcn = 15272.280943迭代计数= 4,obj。fcn = 11029.756194迭代计数= 5,obj。fcn = 10550.015503迭代计数= 6,obj。fcn = 10301.776800迭代计数= 7,obj。fcn = 9283.793786迭代计数= 8,obj。fcn = 7344.379868迭代计数= 9,obj。fcn = 6575.117093迭代计数= 10,obj。 fcn = 6295.215539 Iteration count = 11, obj. fcn = 6167.772051 Iteration count = 12, obj. fcn = 6107.998500 Iteration count = 13, obj. fcn = 6080.461019 Iteration count = 14, obj. fcn = 6068.116247 Iteration count = 15, obj. fcn = 6062.713326 Iteration count = 16, obj. fcn = 6060.390433 Iteration count = 17, obj. fcn = 6059.403978 Iteration count = 18, obj. fcn = 6058.988494 Iteration count = 19, obj. fcn = 6058.814438 Iteration count = 20, obj. fcn = 6058.741777 Iteration count = 21, obj. fcn = 6058.711512 Iteration count = 22, obj. fcn = 6058.698925 Iteration count = 23, obj. fcn = 6058.693695 Iteration count = 24, obj. fcn = 6058.691523 Iteration count = 25, obj. fcn = 6058.690622 Iteration count = 26, obj. fcn = 6058.690247 Iteration count = 27, obj. fcn = 6058.690092 Iteration count = 28, obj. fcn = 6058.690028 Iteration count = 29, obj. fcn = 6058.690001 Iteration count = 30, obj. fcn = 6058.689990 Iteration count = 31, obj. fcn = 6058.689985 Iteration count = 32, obj. fcn = 6058.689983 Iteration count = 33, obj. fcn = 6058.689983
当目标函数改进值低于指定的最小阈值时,聚类停止。
将计算出的群集中心绘制为粗体数字。
为I = 1:6 subplot(2,3, I)为j = 1:Nc x = pairs(i,1);Y = pairs(i,2);文本(中心(j, x)中心(j, y) int2str (j),...“FontWeight”,“大胆”);结束结束