1、0.58.73-3.5-4.12.92.142.02.7-0.15.254.12.8-4.02.263.15.0-1.33.77-0.8-3.46.280.91.23.496.4-5.11.6103.94.01.95.1编写MATLAB代码如下:p=0.1; k=0;L=length(W(:,1);Ak=ones(L,1);while(1) k=k+1; for i=1: g=Ak*W(:,i); % if i Ak=Ak; end if g=3 % Ak=Ak-p*W(: AkMax(:,i)=Ak; LB,LA=size(AkMax);LA %,i)=AkMax(:,i)-Ak; if A
2、kMax=zeros(LB,LA) Ak % break; k带入题目中的数据,可求出权向量。1.现取初始向量全为2,考虑步长p对结果的影响。当p=0.1时,迭代步数为3,结果如下:Ak = 0.6000 1.5800 -0.7400 0.5800 -0.0400 0.5600 0.2600 -0.2400 0.3200 0.6800 -0.0200当p=0.05时,迭代步数为5,结果如下:当p=0.01时,迭代步数为19,结果如下: 0.6400 1.5220 -0.5660 0.6220 0.0640 0.6040 0.3340 -0.1160 0.3880 0.71200.08202.初
3、始向量改变初始向量改变过程类似,这里不再赘述。结论:由上述结果可知:1. 迭代步长越小,迭代次数越多。但迭代步长太小迭代次数将增加很多,迭代步长太大,将可能搜索不到满足条件的权值,应根据实际要求选择合适的步长。2. 初始向量会对迭代步数产生影响,选择合适的初始向量有利于算法的优化。二、编写k-均值算法程序,并用该程序在下列指定类别数和初始聚类中心情况下,对表中数据进行测试,分析比较两种情况下算法实现结果的差异。(要求给出算法流程图,写出实现算法的程序,给出表中数据的测试和分析结果) (1)(2)注:为聚类数目,为初始聚类中心。-7.82-4.58-3.97116.182.815.82-6.68
4、3.162.71126.72-0.93-4.044.36-2.192.0913-6.25-0.260.560.882.8014-6.94-1.221.13-8.643.063.50158.090.202.25-6.870.57-5.45166.810.17-4.154.47-2.625.7617-5.194.244.046.73-2.014.1818-6.38-1.741.43-7.712.34-6.33194.081.305.33-6.91-0.49-5.68206.270.93-2.78(1) 当得到结果如下:(2)当结果如下:算法流程图:结果分析:K-means算法中,需要根据初始类心进行一个初始划分,那么选择初始类心对算法的优化很重要,分类前最好先估计类心再进行分类,以简化算法。