資源簡介
自適應k均值聚類算法 matlab代碼;附帶中文注釋!

代碼片段和文件信息
function?group=Kmeans(kmid)
%K均值聚類算法
person=load(‘sample.txt‘‘height‘‘weight‘);%從文本文件讀入數據放入person結構體中
%?person=person(1:10:);
num=size(person1);%獲得person結構體大小
for?i=1:k%賦初始值,劃分為k類,每類只有選定的k個對象中的一個對象,每類的中心為選定的k個對象的值
????class{i}(1)=mid(i);
????middle(i1)=person(mid(i)1);
????middle(i2)=person(mid(i)2);
end
distance=ComputDistance(personmiddlenumk);%計算每個樣本跟各類中心的距離
temp=cell(size(class));
flag=isSL(tempclassk);
while?flag==0%當分類不收斂的時候
????temp=class;
????class=cell(size(temp));
????for?i=1:num
????????[valueindex]=min(distance(i:));?%找到每個樣本距離哪個類最近
????????dtemp=[i];
????????class{index}=[class{index}dtemp];??%將該樣本劃分到距離最近的類中
????end
????middle=ComputMid(personclassk);%重新計算各類中心點
????distance=ComputDistance(personmiddlenumk);%重新計算各樣本與各類的距離
????flag=isSL(tempclassk);%判斷當前類有沒有變化
end
celldisp(class)
for?i=1:k
????group{i}=person(class{i}(:):);
end
for?i=1:k
covMat=cov(group{i});
fprintf(‘第%d類的均值向量為:\n‘i);
disp(middle(i:))
fprintf(‘第%d類的協方差矩陣為:\n‘i);
disp(covMat)
end
function?m=ComputMid(personclassk)
%計算各類中心點
%結果返回到m矩陣中
for?i=1:k
????length=size(class{i}1);
????csum1=0;
????csum2=0;
????for?j=1:length
????????csum1=csum1+person(class{i}(j)1);
????????csum2=csum2+person(class{i}(j)2);
????end
????????m(i1)=csum1/length;
????????m(i2)=csum2/length;
%?????m(i1)=sum(person(class{i}(:)1))/size(class{i}1);
%?????m(i2)=sum(person(class{i}(:)2))/size(class{i}1);
end
function?d=ComputDistance(personmiddlenumk)
%計算每個樣本跟各類中心的距離
%結果返回到d矩陣中
for?i=1:num
????for?j=1:k
????????d(ij)=sqrt((person(i1)-middle(j1)).^2+(person(i2)-middle(j2)).^2);
????end
end
function?flag=isSL(tempclassk)
%判斷當前類有沒有變化即是否收斂
%有變化則返回0,否則返回1
for?i=1:k
????if?size(temp{i}1)==size(class{i}1)
????????for?j=1:size(class{i}1)
????????????if?temp{i}(j)~=class{i}(j)
????????????????flag=0;
????????????????return;
????????????end
????????end
????????flag=1;
????else
????????flag=0;
????????return;
????end
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2257??2011-10-18?11:10??自適應k均值聚類\Kmeans.m
?????目錄??????????0??2011-10-18?11:10??自適應k均值聚類
-----------?---------??----------?-----??----
?????????????????2257????????????????????2
- 上一篇:譯碼顯示電路用Multisim做的
- 下一篇:基于matlab遺傳算法的數據擬合代碼
評論
共有 條評論