資源簡介
模式識別大作業K均值算法matlab平臺實現,內有iris數據用于測試一起其他相關資料。

代碼片段和文件信息
%---------------------------------
%------K-均值算法-------
%---------------------------------
clc;
clear;
close?all;
%讀入Iris數據
x1?=?xlsread(‘data1.xls‘);?????
x2?=?xlsread(‘data2.xls‘);
x3?=?xlsread(‘data3.xls‘);
X?=?[x1;x2;x3];
choice?=?input(‘Please?input?the?choice:(1為聚類中心在第一類,2為聚類中心在第二類,3為聚類中心在第三類,4為聚類中心分別在三類中)‘);?
index??=?randperm(50);%?生成隨機序號
%?初始聚類中心的選擇
switch(choice)
????case(1)??????%?聚類中心在第一類中并選擇聚類中心
????????Z1?=?x1(index(1):);
????????Z2?=?x1(index(2):);
????????Z3?=?x1(index(3):);
????case(2)??????%?聚類中心在第二類中
????????Z1?=?x2(index(1):);
????????Z2?=?x2(index(2):);
????????Z3?=?x2(index(3):);
????case(3)??????%?聚類中心在第三類中
????????Z1?=?x3(index(1):);
????????Z2?=?x3(index(2):);
????????Z3?=?x3(index(3):);
????case(4)??????%?聚類中心分別在三類中
????????Z1?=?x1(index(1):);
????????Z2?=?x2(index(2):);
????????Z3?=?x3(index(3):);
end
%?K-均值算法
step?=?0;
while(1)
????step???=?step?+?1;?%?記錄迭代次數
????num1?=?0;
????num2?=?0;
????num3?=?0;
????for?i=1:150
????????dist1?=?0;??%?樣本與第一類聚類中心的距離
????????dist2?=?0;??%?樣本與第二類聚類中心的距離
????????dist3?=?0;??%?樣本與第三類聚類中心的距離
????????dist1?=?sum((?X(i:)?-?Z1?).^2);
????????dist2?=?sum((?X(i:)?-?Z2?).^2);
????????dist3?=?sum((?X(i:)?-?Z3?).^2);
????????%?判斷樣本屬于哪一類,并把樣本存入該類中
????????if?dist1?<=?dist2?&&?dist1?<=?dist3??
????????????num1?=?num1?+?1;
????????????class1(num1:)?=?X(i:);?
????????end
???????
????????if?dist2?<=?dist1?&&?dist2?<=?dist3
????????????num2?=?num2?+?1;
????????????class2(num2:)?=?X(i:);
????????end
??????
????????if?dist3?<=?dist1?&&?dist3?<=?dist2
????????????num3?=?num3?+?1;
????????????class3(num3:)?=?X(i:);
????????end
???????
????end
????temp1?=?mean(class1);
????temp2?=?mean(class2);
????temp3?=?mean(class3);
????%重新調整當前類別的聚類中心
????if?sum(temp1-Z1)==0?&&?sum(temp2-Z2)==0?&&?sum(temp3-Z3)==0
????????break;????
????else
????????Z1?=?temp1;
????????Z2?=?temp2;
????????Z3?=?temp3;
????end
end
disp(‘迭代次數為:‘)step
disp(‘第一類所含樣本數為:‘)num1
disp(‘第二類所含樣本數為:‘)num2
disp(‘第三類所含樣本數為:‘)num3
%?畫圖程序
%?以第一個特征作x軸和第二個特征作y軸,畫圖
%原始數據的聚類圖
for?i=1:150
????if?(i<=50)
????????plot(X(i1)X(i2)‘r*‘)
????????hold?on
????end
????????if?(i>50?&&i<=100)
????????plot(X(i1)X(i2)‘g*‘)
????????hold?on
????????end
????????if?(i>100&&i<=150)
????????plot(X(i1)X(i2)‘b*‘)
????????hold?on
????end
end
title(‘原始數據的聚類圖‘);
strt=[‘紅色*為第一類;綠色*為第二類;藍色*為第三類‘];
text(41.8strt);
%K-均值算法分類的聚類圖
figure;
for?i=1:num1
???plot(class1(i1)class1(i2)‘r*‘);
????hold?on;
end
for?j=1:num2
????plot(class2(j1)class2(j2)‘g*‘);
????hold?on;
end
for?k=1:num3
????plot(class3(k1)class3(k2)‘b*‘);
????hold?on;
end
title(‘K-均值算法的聚類圖‘);
strt=[‘紅色*為第一類;綠色*為第二類;藍色*為第三類‘];
text(41.8strt);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14848??2012-03-19?10:44??第2次大作業k均值\K-均值算法\iris1.xls
?????文件??????15360??2012-03-19?10:44??第2次大作業k均值\K-均值算法\iris2.xls
?????文件??????15360??2012-03-20?14:42??第2次大作業k均值\K-均值算法\iris3.xls
?????文件???????2018??2012-12-09?22:33??第2次大作業k均值\K-均值算法\Kmeans.m
?????文件??????10958??2012-11-17?22:34??第2次大作業k均值\K-均值算法\wine.data.txt
?????文件??????15360??2012-12-09?22:32??第2次大作業k均值\K-均值算法\wine1.xls
?????文件??????17408??2012-12-09?22:32??第2次大作業k均值\K-均值算法\wine2.xls
?????文件??????14336??2012-12-09?22:33??第2次大作業k均值\K-均值算法\wine3.xls
?????文件???????3103??2012-04-05?14:24??第2次大作業k均值\Kmeans.m
?????文件?????146924??2012-12-09?01:49??第2次大作業k均值\周萌02105143模式識別大作業2(K均值).pdf
?????文件???????6752??2012-12-09?01:31??第2次大作業k均值\新建文件夾\93317467Kmeans.rar
?????文件??????14848??2012-03-19?10:44??第2次大作業k均值\新建文件夾\K-均值算法\data1.xls
?????文件??????15360??2012-03-19?10:44??第2次大作業k均值\新建文件夾\K-均值算法\data2.xls
?????文件??????15360??2012-03-20?14:42??第2次大作業k均值\新建文件夾\K-均值算法\data3.xls
?????文件???????3103??2012-12-09?22:43??第2次大作業k均值\新建文件夾\K-均值算法\Kmeans.m
?????文件??????10240??2012-12-09?22:41??第2次大作業k均值\新建文件夾\K-均值算法\wine1.xls
?????文件??????10240??2012-12-09?22:41??第2次大作業k均值\新建文件夾\K-均值算法\wine2.xls
?????文件??????10240??2012-12-09?22:41??第2次大作業k均值\新建文件夾\K-均值算法\wine3.xls
?????文件????????528??2012-12-09?01:08??第2次大作業k均值\新建文本文檔.txt
?????文件??????69632??2012-12-09?01:49??第2次大作業k均值\論文.doc
?????目錄??????????0??2012-12-09?22:41??第2次大作業k均值\新建文件夾\K-均值算法
?????目錄??????????0??2012-12-09?22:33??第2次大作業k均值\K-均值算法
?????目錄??????????0??2012-12-09?01:32??第2次大作業k均值\新建文件夾
?????目錄??????????0??2012-12-09?01:50??第2次大作業k均值
-----------?---------??----------?-----??----
???????????????411978????????????????????24
- 上一篇:圖像字符分割
- 下一篇:retinex的MATLAB實現程序
評論
共有 條評論