資源簡介
Kmeans.rar

代碼片段和文件信息
%%?Kmeans算法
%?輸入:
%?data?輸入的不帶分類標(biāo)號的數(shù)據(jù)
%?K?數(shù)據(jù)一共分多少類
%?iniCentriods?自行指定初始聚類中心
%?iterations?迭代次數(shù)
%?輸出:
%?Idx?返回的分類標(biāo)號
%?centroids?每一類的中心
%?Distance?類內(nèi)總距離
?
function?[IdxcentroidsDistance]=KMeans(dataKiniCentriodsiterations)
[numOfDatanumOfAttr]=size(data);???%numOfData是數(shù)據(jù)個數(shù),numOfAttr是數(shù)據(jù)維數(shù)
centroids=iniCentriods;
%%?迭代
for?iter=1:iterations
????pre_centroids=centroids;????????????%上一次求得的中心位置
????
????tags=zeros(numOfDataK);
????%%?尋找最近中心,更新中心
????for?i=1:numOfData
????????D=zeros(1K);%?每個數(shù)據(jù)點與每個聚類中心的標(biāo)準(zhǔn)差
????????Dist=D;
????????
????????%?計算每個點到每個中心點的標(biāo)準(zhǔn)差
????????for?j=1:K
????????????Dist(j)=norm(data(i:)-centroids(j:)2);
????????end
????????
????????[minDistanceindex]=min(Dist);%?尋找距離最小的類別索引
????????tags(iindex)=1;%?標(biāo)記最小距離所處的位置(類別)
????end
????
????
????%%?取均值更新聚類中心點
????for?i=1:K
????????if?sum(tags(:i))~=0
????????????%?未出現(xiàn)空類,計算均值作為下一聚類中心
????????????for?j=1:numOfAttr
????????????????centroids(ij)=sum(tags(:i).*data(:j))/sum(tags(:i));
????????????end
????????else?%?如果出現(xiàn)空類,從數(shù)據(jù)集中隨機(jī)選中一個點作為中心
????????????randidx?=?randperm(size(data?1));
????????????centroids(i:)?=?data(randidx(1):);
????????????tags(randidx:)=0;
????????????tags(randidxi)=1;
????????end
????end
????
????
????if?sum(norm(pre_centroids-centroids2))<0.001??%不斷迭代直到位置不再變化
????????break;
????end
????
????
end
%%?計算輸出結(jié)果
Distance=zeros(numOfData1);
Idx=zeros(numOfData1);
for?i=1:numOfData
????D=zeros(1K);%?每個數(shù)據(jù)點與每個聚類中心的標(biāo)準(zhǔn)差
????Dist=D;
????%?計算每個點到每個中心點的標(biāo)準(zhǔn)差
????for?j=1:K
????????Dist(j)=norm(data(i:)-centroids(j:)2);
????end
????
????[distanceidx]=min(Dist);%?尋找距離最小的類別索引
????distance=Dist(idx);
????
????Distance(i)=distance;
????Idx(i)=idx;
end
Distance=sum(Distance1);%?計算類內(nèi)總距離
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2708??2018-04-25?12:41??Kmeans\Iris.txt
?????文件???????2043??2018-05-16?18:16??Kmeans\KMeans.m
?????目錄??????????0??2018-05-16?18:22??Kmeans
?????文件????????373??2018-05-16?18:22??Kmeans\test1.m
?????文件????????891??2018-05-16?18:21??Kmeans\test2.m
-----------?---------??----------?-----??----
?????????????????6015????????????????????5
- 上一篇:psam.7z
- 下一篇:UCI數(shù)據(jù)集mat格式.rar
評論
共有 條評論