聚類算法分析_第1頁(yè)
聚類算法分析_第2頁(yè)
聚類算法分析_第3頁(yè)
聚類算法分析_第4頁(yè)
聚類算法分析_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程名稱: 數(shù)據(jù)挖掘 實(shí)驗(yàn)項(xiàng)目: 聚類算法分析研究 班 級(jí): 學(xué) 號(hào): 學(xué)生姓名: 聚類算法分析研究1 實(shí)驗(yàn)環(huán)境以及所用到的主要軟件Windows Vista Weka3.6MATLAB R2009a2 實(shí)驗(yàn)內(nèi)容描述聚類是對(duì)數(shù)據(jù)對(duì)象進(jìn)行劃分的一種過(guò)程,與分類不同的是,它所劃分的類是未知的,故此,這是一個(gè)“無(wú)指導(dǎo)的學(xué)習(xí)” 過(guò)程,它傾向于數(shù)據(jù)的自然劃分。其中聚類算法常見的有基于層次方法、基于劃分方法、基于密度以及網(wǎng)格等方法。本文中對(duì)近年來(lái)聚類算法的研究現(xiàn)狀與新進(jìn)展進(jìn)行歸納總結(jié)。一方面對(duì)近年來(lái)提出的較有代表性的聚類算法,從算法思想。關(guān)鍵技術(shù)和優(yōu)缺點(diǎn)等方面進(jìn)行分析概括;另一方面選擇一些典型的聚類算法和

2、一些知名的數(shù)據(jù)集,主要從正確率和運(yùn)行效率兩個(gè)方面進(jìn)行模擬實(shí)驗(yàn),并分別就同一種聚類算法、不同的數(shù)據(jù)集以及同一個(gè)數(shù)據(jù)集、不同的聚類算法的聚類情況進(jìn)行對(duì)比分析。最后通過(guò)綜合上述兩方面信息給出聚類分析的研究熱點(diǎn)、難點(diǎn)、不足和有待解決的一些問題等。實(shí)驗(yàn)中主要選擇了K均值聚類算法、FCM模糊聚類算法并以UCI Machine Learning Repository網(wǎng)站下載的IRIS和WINE數(shù)據(jù)集為基礎(chǔ)通過(guò)MATLAB實(shí)現(xiàn)對(duì)上述算法的實(shí)驗(yàn)測(cè)試。然后以WINE數(shù)據(jù)集在學(xué)習(xí)了解Weka軟件接口方面的基礎(chǔ)后作聚類分析,使用最常見的K均值(即K-means)聚類算法和FCM模糊聚類算法。下面簡(jiǎn)單描述一下K均值聚類

3、的步驟。K均值算法首先隨機(jī)的指定K個(gè)類中心。然后:(1)將每個(gè)實(shí)例分配到距它最近的類中心,得到K個(gè)類;(2)計(jì)分別計(jì)算各類中所有實(shí)例的均值,把它們作為各類新的類中心。重復(fù)(1)和(2),直到K個(gè)類中心的位置都固定,類的分配也固定。在實(shí)驗(yàn)過(guò)程中通過(guò)利用Weka軟件中提供的simpleKmeans(也就是K均值聚類算法對(duì)WINE數(shù)據(jù)集進(jìn)行聚類分析,更深刻的理解k均值算法,并通過(guò)對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行觀察分析,找出實(shí)驗(yàn)中所存在的問題。然后再在學(xué)習(xí)了解Weka軟件接口方面的基礎(chǔ)上對(duì)Weka軟件進(jìn)行一定的擴(kuò)展以加入新的聚類算法來(lái)實(shí)現(xiàn)基于Weka平臺(tái)的聚類分析。3 實(shí)驗(yàn)過(guò)程3.1 K均值聚類算法3.1.1 K均值

4、聚類算法理論K均值算法是一種硬劃分方法,簡(jiǎn)單流行但其也存在一些問題諸如其劃分結(jié)果并不一定完全可信。K均值算法的劃分理論基礎(chǔ)是(1)其中是劃分的聚類數(shù),是已經(jīng)屬于第類的數(shù)據(jù)集是相應(yīng)的點(diǎn)到第類的平均距離,即(2)其中表示在數(shù)據(jù)集中的對(duì)象數(shù)。3.1.2 算法的基本過(guò)程任意選擇K個(gè)對(duì)象作為初始的類的中心;根據(jù)類中的平均值,將每個(gè)數(shù)據(jù)點(diǎn) (重新)賦給最相近的類;更新類的平均值;不再發(fā)生變化,即沒有對(duì)象進(jìn)行被重新分配時(shí)過(guò)程結(jié)束。3.1.3 算法代碼分析K均值聚類算法的代碼分析過(guò)程如下首先調(diào)用clust_normalize()函數(shù)將數(shù)據(jù)集標(biāo)準(zhǔn)化具體過(guò)程如下data=clust_normalize(data,

5、'range');下面是對(duì)K均值算法的初始化if max(size(param.c)=1, c = param.c; index=randperm(N); v=X(index(1:c),:);v = v + 1e-10; v0=X(index(1:c)+1,:);v0 = v0 - 1e-10;else v = param.c; c = size(param.c,1); index=randperm(N); v0=X(index(1:c)+1,:);v0 = v0 + 1e-10;end iter = 0;接著是迭代求解直到滿足要求的解或者達(dá)到最大的迭代值while prod(

6、max(abs(v - v0), iter = iter +1; v0 = v; for i = 1:c 這里是用來(lái)計(jì)算歐氏距離 dist(:,i) = sum(X - repmat(v(i,:),N,1).2,2); end 下面將分類結(jié)果賦值 m,label = min(dist'); distout=sqrt(dist); 下面計(jì)算分類中心 for i = 1:c index=find(label = i); if isempty(index) v(i,:) = mean(X(index,:); else ind=round(rand*N-1); v(i,:)=X(ind,:);

7、 end f0(index,i)=1; end J(iter) = sum(sum(f0.*dist); if param.vis clf hold on plot(v(:,1),v(:,2),'ro') colors='r.' 'gx' 'b+' 'ys' 'md' 'cv' 'k.' 'r*' 'g*' 'b*' 'y*' 'm*' 'c*' 'k*'

8、; for i=1:c index = find(label = i); if isempty(index) dat=X(index,:); plot(dat(:,1),dat(:,2),colorsi) end end hold off pause(0.1) end end保存求解結(jié)果result.cluster.v = v;result.data.d = distout;計(jì)算劃分矩陣 f0=zeros(N,c);for i=1:c index=find(label = i); f0(index,i)=1;end result.data.f=f0;result.iter = iter;res

9、ult.cost = J;3.1.4 實(shí)驗(yàn)配置實(shí)驗(yàn)過(guò)程配置比較簡(jiǎn)單只需按照如下介紹即可。將路徑修改為MATLAB工具箱的相應(yīng)路徑在次是“E:MATLABtoolboxFUZZCLUST”如下path(path,'E:MATLABtoolboxFUZZCLUST')選擇數(shù)據(jù)集在實(shí)驗(yàn)中選擇了IRIS數(shù)據(jù)集,因此IRIS=1。在下面選擇哪個(gè)數(shù)據(jù)集只需將相應(yīng)的值置為1其他兩個(gè)置為0。wine=0;iris=1;wisc=0;if wine load winedat.txt data=winedat(:,1:end-1); C=winedat(:,end);endif iris load

10、 iris data=iris(:,1:4); C=zeros(length(data),1); for i=1:3 C(find(iris(:,4+i)=1)=i; end endif wisc wisc數(shù)據(jù)預(yù)處理 wisc=wk1read('wisconsin.wk1'); NI=9; NT=length(wisc); data.X=wisc(:,11) wisc(:,2:10); data.X=sortrows(data.X,1); I,J=find(data.X(:,7)=0); data.X=data.X(I,:); I,J=find(data.X(:,1)=2);

11、data.X(I,1)=1; I,J=find(data.X(:,1)=4); data.X(I,1)=2; C=data.X(:,1); data=data.X(:,2:end); end 數(shù)據(jù)標(biāo)準(zhǔn)化data.X=data;data=clust_normalize(data,'range');下面的參數(shù)在FCM模糊聚類時(shí)用到param.m=2;如下參數(shù)是設(shè)置分類數(shù)即K=3param.c=3;param.val=1;param.vis=0;result=Kmeans(data,param);result=validity(result,data,param);d1,d2=max

12、(result.data.f');Cc=;for i=1:param.c Ci=C(find(d2=i); dum1=hist(Ci,1:param.c); dd1,dd2=max(dum1); Cc(i)=dd2;end3.1.5 實(shí)驗(yàn)效果實(shí)驗(yàn)中使用了UCI的IRIS數(shù)據(jù)集和WINE數(shù)據(jù)集,實(shí)驗(yàn)的結(jié)果如下圖1) IRIS數(shù)據(jù)集實(shí)驗(yàn)結(jié)果MATLAB實(shí)驗(yàn)輸出的圖形如下圖 PCA圖圖 Conventional Sammon mapping 圖圖 Fuzzy Sammon mapping 圖并且可在實(shí)驗(yàn)中得到MATLAB的算法評(píng)價(jià)指標(biāo)如下表格 1 IRIS數(shù)據(jù)集算法評(píng)價(jià)指標(biāo)PC1CENaN2

13、) WINE數(shù)據(jù)集實(shí)驗(yàn)結(jié)果MATLAB實(shí)驗(yàn)輸出的圖形如下圖 4 PCA圖圖 5 Conventional Sammon mapping 圖圖 6 Fuzzy Sammon mapping 圖并且可在實(shí)驗(yàn)中得到MATLAB的算法評(píng)價(jià)指標(biāo)如下表格 2 WINE數(shù)據(jù)集算法評(píng)價(jià)指標(biāo)PC1CENaN將該算法在兩種不同數(shù)據(jù)集中的測(cè)試結(jié)果對(duì)比如下表格 3 不同數(shù)據(jù)集的算法指標(biāo)對(duì)比KmeansPCCEIRIS1NaNWINE1NaN3.1.6 K均值聚類算法的相關(guān)特點(diǎn)該算法試圖找出使平方誤差值最小的K個(gè)劃分。當(dāng)結(jié)果類是密集的,而類與類之間區(qū)分明顯時(shí),它的效果較好。算法復(fù)雜度,其中是迭代次數(shù)。因此其可擴(kuò)展性較好

14、,對(duì)大數(shù)據(jù)集處理有較高的效率。算法常以局部最優(yōu)結(jié)束。全局最優(yōu)要窮舉所有可能的劃分。缺點(diǎn):不適合發(fā)現(xiàn)非凸面狀的類。不適合大小差別較大的類。對(duì)于噪聲和孤立點(diǎn)是敏感的,由于少量的該類數(shù)據(jù)對(duì)平均值產(chǎn)生較大的影響。3.2 FCM模糊聚類算法FCM算法也是一種基于劃分的聚類算法,它的思想就是使得被劃分到同一類的對(duì)象之間相似度最大,而不同類之間的相似度最小。模糊C均值算法是普通C均值算法的改進(jìn),普通C均值算法對(duì)于數(shù)據(jù)的劃分是硬性的,而FCM則是一種柔性的模糊劃分。在介紹FCM具體算法之前我們先介紹一些模糊集合的基本知識(shí)。3.2.1 FCM模糊聚類算法的理論1) 理論基礎(chǔ)-模糊集基本知識(shí)首先說(shuō)明隸屬度函數(shù)的概

15、念。隸屬度函數(shù)是表示一個(gè)對(duì)象隸屬于集合的程度的函數(shù),通常記做,其自變量范圍是所有可能屬于集合的對(duì)象(即集合所在空間中的所有點(diǎn)),取值范圍是,即。表示完全隸屬于集合,相當(dāng)于傳統(tǒng)集合概念上的。一個(gè)定義在空間上的隸屬度函數(shù)就定義了一個(gè)模糊集合,或者叫定義在論域上的模糊子集。在聚類的問題中,可以把聚類生成的類看成模糊集合,因此每個(gè)樣本點(diǎn)隸屬于每個(gè)類的隸屬度就是區(qū)間里面的值。2) FCM的算法理論1973年,Bezdek提出了該算法,并作為早期硬C均值聚類(HCM)方法的一種改進(jìn),命名為模糊C均值聚類簡(jiǎn)稱FCM是一種目標(biāo)函數(shù)法。假設(shè)將樣本空間要分為個(gè)類,則類中心集使下式的目標(biāo)函數(shù)值最小(3)(4)且有其

16、中被稱為模糊隸屬度矩陣。表示的是數(shù)據(jù)隸屬于類中心的隸屬度。是模糊加權(quán)參數(shù),用于控制在模糊類間的程度依據(jù)參考的文獻(xiàn)中一般取值為15。應(yīng)用拉格朗日乘法并基于上述約束可得到如下式 (5)且 (6)其中是到第類中心的歐氏距離,即。3.2.2 FCM模糊聚類算法的過(guò)程置初始化參數(shù)值,包含模糊加權(quán)參數(shù)值和聚類數(shù),以及迭代的次數(shù)和算法終止誤差。隨機(jī)化置初始化聚類的中心。計(jì)算隸屬度矩陣可通過(guò)(5)式計(jì)算得來(lái)。依據(jù)(6)式迭代計(jì)算聚類的中心。檢驗(yàn)是否成立,成立則算法結(jié)束否則。3.2.3 算法代碼分析FCM聚類算法的代碼分析過(guò)程如下參數(shù)檢查并初始化默認(rèn)參數(shù)if exist('param.m')=1

17、, m = param.m;else m = 2;end;if exist('param.e')=1, e = param.m;else e = 1e-4;end;N,n = size(X);Nf0,nf0 = size(f0); X1 = ones(N,1);初始化模糊劃分矩陣rand('state',0)if max(Nf0,nf0) = 1, % only number of cluster given c = f0; mm = mean(X); %mean of the data (1,n) aa = max(abs(X - ones(N,1)*mm);

18、 % v = 2*(ones(c,1)*aa).*(rand(c,n)-0.5) + ones(c,1)*mm; for j = 1 : c, xv = X - X1*v(j,:); d(:,j) = sum(xv*eye(n).*xv),2); end; d = (d+1e-10).(-1/(m-1); f0 = (d ./ (sum(d,2)*ones(1,c); else c = size(f0,2); fm = f0.m; sumf = sum(fm); v = (fm'*X)./(sumf'*ones(1,n); %end;f = zeros(N,c); iter =

19、 0; 該參數(shù)用來(lái)迭代計(jì)數(shù)迭代求解直到滿足實(shí)驗(yàn)要求的精度while max(max(f0-f) > e iter = iter + 1; f = f0; 下面計(jì)算分類中心 fm = f.m; sumf = sum(fm); v = (fm'*X)./(sumf'*ones(1,n); for j = 1 : c, xv = X - X1*v(j,:); d(:,j) = sum(xv*eye(n).*xv),2); end; distout=sqrt(d); J(iter) = sum(sum(f0.*d); d = (d+1e-10).(-1/(m-1); f0 = (

20、d ./ (sum(d,2)*ones(1,c);endfm = f.m; sumf = sum(fm);求解結(jié)果保存result.data.f=f0;result.data.d=distout;result.cluster.v=v;result.iter = iter;result.cost = J;3.2.4 實(shí)驗(yàn)配置實(shí)驗(yàn)配置過(guò)程與K均值算法的實(shí)驗(yàn)配置過(guò)程基本相同,只是在FCM模糊聚類算法實(shí)驗(yàn)中要用到模糊隸屬度參數(shù),一般將其設(shè)置在15之間在實(shí)驗(yàn)中設(shè)置如下param.m=2。也可以根據(jù)需要對(duì)其進(jìn)行修改。3.2.5 實(shí)驗(yàn)效果實(shí)驗(yàn)中使用了UCI的IRIS數(shù)據(jù)集和WINE數(shù)據(jù)集,實(shí)驗(yàn)的結(jié)果如下圖1

21、) IRIS數(shù)據(jù)集實(shí)驗(yàn)結(jié)果MATLAB實(shí)驗(yàn)輸出的圖形如下圖 7 PCA圖圖 8 Conventional Sammon mapping 圖圖 9 Fuzzy Sammon mapping 圖并且可在實(shí)驗(yàn)中得到MATLAB的算法評(píng)價(jià)指標(biāo)如下表格 4 IRIS數(shù)據(jù)集算法評(píng)價(jià)指標(biāo)PC0.7420CE0.46822) WINE數(shù)據(jù)集實(shí)驗(yàn)結(jié)果MATLAB實(shí)驗(yàn)輸出的圖形如下圖 0 PCA圖圖 11 Conventional Sammon mapping 圖圖 12 Fuzzy Sammon mapping 圖并且可在實(shí)驗(yàn)中得到MATLAB的算法評(píng)價(jià)指標(biāo)如下表格 5 WINE數(shù)據(jù)集算法評(píng)價(jià)指標(biāo)PC0.503

22、3CE0.8546將該算法在兩種不同數(shù)據(jù)集中的測(cè)試結(jié)果對(duì)比如下表格 6 不同數(shù)據(jù)集的算法指標(biāo)對(duì)比FCMPCCEIRIS0.74200.4682WINE0.50330.85463.2.6 FCM模糊聚類算法特點(diǎn)FCM算法需要兩個(gè)參數(shù)一個(gè)是聚類數(shù)目,另一個(gè)是參數(shù)。一般來(lái)講要遠(yuǎn)遠(yuǎn)小于聚類樣本的總個(gè)數(shù),同時(shí)要保證。對(duì)于,它是一個(gè)控制算法的柔性的參數(shù),如果過(guò)大,則聚類效果會(huì)很次,而如果過(guò)小則算法會(huì)接近K均值聚類算法。算法的輸出是個(gè)聚類中心點(diǎn)向量和的一個(gè)模糊劃分矩陣,這個(gè)矩陣表示的是每個(gè)樣本點(diǎn)屬于每個(gè)類的隸屬度。根據(jù)這個(gè)劃分矩陣按照模糊集合中的最大隸屬原則就能夠確定每個(gè)樣本點(diǎn)歸為哪個(gè)類。聚類中心表示的是每

23、個(gè)類的平均特征,可以認(rèn)為是這個(gè)類的中心代表。FCM算法是圖像分割使用最多的方法之一,它的成功主要?dú)w功于為解決每個(gè)圖像像素的隸屬需要引入了模糊性。與K均值聚類相比較來(lái)說(shuō)FCM能夠保留初始圖像的更多信息。FCM對(duì)孤立點(diǎn)和其他人造圖像非常敏感。3.3 算法評(píng)價(jià)在算法的評(píng)價(jià)指標(biāo)中選擇指標(biāo)PC和CE作為以上算法的評(píng)價(jià)指標(biāo)。PC-Partition Coefficient 用來(lái)測(cè)量在類之間的重復(fù)數(shù)量,其由Beadek定義如下其中的是數(shù)據(jù)點(diǎn)在類中的隸屬度系數(shù)。CE-Classification Entropy 用來(lái)測(cè)量劃分類的模糊度,與PC有一定的相似性。其定義如下對(duì)于文中涉及到的K均值聚類算法和FCM模糊

24、聚類算法在同一數(shù)據(jù)集中的實(shí)驗(yàn)對(duì)比如下對(duì)于數(shù)據(jù)集IRIS的對(duì)比如下表表格7 IRIS數(shù)據(jù)集下的評(píng)價(jià)指標(biāo)對(duì)比IRISPCCEKmeans1NaNFCM0.74200.4682對(duì)于數(shù)據(jù)集WINE的對(duì)比如下表表格7 WINE數(shù)據(jù)集下的評(píng)價(jià)指標(biāo)對(duì)比WINEPCCEKmeans1NaNFCM0.50330.8546有時(shí)也用所謂的文檔關(guān)聯(lián)來(lái)評(píng)測(cè)聚類方法。文檔關(guān)聯(lián)是指屬于同一個(gè)類別的任意兩個(gè)文檔之間所形成的“文檔對(duì)”關(guān)系?;谖臋n關(guān)聯(lián)的聚類評(píng)測(cè)方法,其考察的基本對(duì)象就是“文檔對(duì)”。這里的文檔其實(shí)就是分類的數(shù)據(jù)對(duì)。3.4 基于weka的聚類分析3.4.1 數(shù)據(jù)的預(yù)處理從網(wǎng)站下載的WINE原始數(shù)據(jù)集wine.da

25、ta文件,而Weka軟件需要的是ARFF文件格式的數(shù)據(jù)。因此需要將數(shù)據(jù)轉(zhuǎn)換成Weka支持的ARFF文件格式的。轉(zhuǎn)換過(guò)程如下首先用記事本方式打開文件發(fā)現(xiàn)文件中的數(shù)據(jù)之間是以逗號(hào)來(lái)劃分的,因此可以將數(shù)據(jù)文件的名稱改為wine.csv。然后,打開Weka選擇Tools選項(xiàng)下的ArffViewer如下圖打開ArffViewer后選擇File選項(xiàng)下的Open彈出如下圖的打開窗口,在文件類型一欄選擇CSV data files(*.csv)項(xiàng)。然后找到相應(yīng)的文件后單擊打開后如下圖接下來(lái)選擇File選項(xiàng)下的Save as 后彈出如下圖在文件名欄輸入相應(yīng)的文件名后單擊保存即可得到相應(yīng)的arff格式的數(shù)據(jù)集文件

26、。K均值算法只能處理數(shù)值型的屬性,遇到分類型的屬性時(shí)要把它變?yōu)槿舾蓚€(gè)取值0和1的屬性。WEKA將自動(dòng)實(shí)施這個(gè)分類型到數(shù)值型的變換,而且WEKA會(huì)自動(dòng)對(duì)數(shù)值型的數(shù)據(jù)作標(biāo)準(zhǔn)化。WEKA中的StringToWordVector過(guò)濾器能將ARFF文件中的文本數(shù)據(jù)轉(zhuǎn)換為空間向量模型,它同時(shí)擁有分詞、特征表示、特征 提取等功能。在Explorer中的Reprocess界面導(dǎo)入ARFF文件,選擇StringToWordVector過(guò)濾器,再設(shè)置相關(guān)參數(shù)。3.4.2 聚類過(guò)程進(jìn)入Explorer中的Preprocess 界面單擊Open file后彈出如下圖的數(shù)據(jù)集選擇窗口,選擇WINE.arff數(shù)據(jù)集文件后

27、打開。然后可以在Filter下的choose中選擇需要的過(guò)濾器參數(shù)。接下來(lái)選擇Cluster選項(xiàng)界面,在Clusterer中選擇choose來(lái)選擇Weka中提供的聚類算法 Clusters下的SimpleKMeans,然后設(shè)置參數(shù)如下圖即為修改“numClusters”為3就是我們要將數(shù)據(jù)聚類為3類即K=3,下面的“seed”參數(shù)是要設(shè)置一個(gè)隨機(jī)種子,依此產(chǎn)生一個(gè)隨機(jī)數(shù),用來(lái)得到K均值算法中第一次給出的K個(gè)簇中心的位置,這里暫時(shí)讓它就為10,設(shè)置完成后單擊OK返回。然后選中“Cluster Mode”的“Use training set”,點(diǎn)擊“Start”按鈕,觀察右邊“Clusterer

28、output”給出的聚類結(jié)果如下= Run information =Scheme: Weka.clusterers.SimpleKMeans -N 3 -A "Weka.core.EuclideanDistance -R first-last" -I 500 -S 10Relation: WINEDATInstances: 177Attributes: 14 1.42E+01 1.71E+00 2.43E+00 1.56E+01 1.27E+02 2.80E+00 3.06E+00 2.80E-01 2.29E+00 5.64E+00 1.04E+00 3.92E+00

29、1.07E+03 1Test mode: evaluate on training data= Model and evaluation on training set =kMeans=Number of iterations: 7Missing values globally replaced with mean/modeCluster centroids: Cluster#Attribute Full Data 0 1 2 (177) (59) (49) (69)=1.42E+01 13.0006 13.7305 13.1612 12.26231.71E+00 2.3399 2.01 3.

30、3445 1.90862.43E+00 2.3662 2.4585 2.4347 2.23861.56E+01 19.5169 17.2814 21.4388 20.06381.27E+02 99.5876 106.5424 99.0204 94.04352.80E+00 2.2923 2.8486 1.6782 2.25263.06E+00 2.0234 2.9795 0.798 2.07622.80E-01 0.3623 0.2888 0.4508 0.36232.29E+00 1.5869 1.8937 1.1631 1.62575.64E+00 5.0553 5.4895 7.3451

31、 3.0581.04E+00 0.957 1.0666 0.6859 1.05573.92E+00 2.6043 3.1507 1.6902 2.78621.07E+03 745.678 1116.1017 627.551 512.82611 1.9435 1.0169 2.9796 2Clustered Instances0 59 ( 33%)1 49 ( 28%)2 69 ( 39%)也可以在左下角“Result list”中這次產(chǎn)生的結(jié)果上點(diǎn)右鍵,“View in separate window”在新窗口中瀏覽結(jié)果。3.4.3 結(jié)果分析首先我們注意到結(jié)果中有這么一行: 這是評(píng)價(jià)聚類好壞的

32、標(biāo)準(zhǔn),數(shù)值越小說(shuō)明同一類實(shí)例之間的距離越小。也許你得到的數(shù)值會(huì)不一樣;實(shí)際上如果把"seed"參數(shù)改一下,得到的這個(gè)數(shù)值就可能會(huì)不一樣。我們應(yīng)該多嘗試幾個(gè)seed,并采納這個(gè)數(shù)值最小的那個(gè)結(jié)果。接下來(lái)"Cluster centroids:"之后列出了各個(gè)類中心的位置。對(duì)于數(shù)值型的屬性,類中心就是它的均值(Mean);分類型的就是它的眾數(shù)(Mode), 也就是說(shuō)這個(gè)屬性上取值為眾數(shù)值的實(shí)例最多。對(duì)于數(shù)值型的屬性,還給出了它在各個(gè)類里的標(biāo)準(zhǔn)差(Std Devs)。最后的"Clustered Instances"是各個(gè)類中實(shí)例的數(shù)目及百分比

33、如下Clustered Instances0 59 ( 33%)1 49 ( 28%)2 69 ( 39%)實(shí)際的聚類各類中的實(shí)例分配如下Number of Instances class 1 59class 2 71class 3 48通過(guò)對(duì)比可以得出聚類的結(jié)果還是比較滿意的。為了觀察可視化的聚類結(jié)果,我們?cè)谧笙路?quot;Result list"列出的結(jié)果上右擊,點(diǎn)"Visualize cluster assignments"。彈出的窗口給出了各實(shí)例的散點(diǎn)圖。最上方的兩個(gè)框是選擇橫坐標(biāo)和縱坐標(biāo),第二行的"color"是散點(diǎn)圖著色的依據(jù),默

34、認(rèn)是根 據(jù)不同的類"Cluster"給實(shí)例標(biāo)上不同的顏色,如下圖從圖中很容易看出聚類的結(jié)果由不同顏色區(qū)分??梢栽谶@里點(diǎn)"Save"把聚類結(jié)果保存成ARFF文件。在這個(gè)新的ARFF文件中,"instance_number"屬性表示某實(shí)例的編號(hào),"Cluster"屬性表示聚類算法給出的該實(shí)例所在的類。3.4.4 實(shí)驗(yàn)擴(kuò)展聚類算法在數(shù)據(jù)挖掘里面被稱之為無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning),這是與分類算法(supervised learning)相對(duì)的。所謂無(wú)監(jiān)督學(xué)習(xí)就是在預(yù)先不知道樣本類別的情況下,由

35、聚類算法來(lái)判別樣本的類別的一種學(xué)習(xí)方法。但是在Weka中還有一個(gè)問題就是所提供的聚類算法有限難以滿足具體需要,基于此問題在閱讀了相關(guān)文獻(xiàn)后發(fā)現(xiàn)可以通過(guò)擴(kuò)展Weka的聚類算法來(lái)滿足具體的實(shí)驗(yàn)需要。通過(guò)分析實(shí)驗(yàn)的相關(guān)代碼可以得到Weka中聚類的一般過(guò)程主要如下1. 讀入需預(yù)測(cè)樣本2. 初始化聚類算法(并設(shè)置參數(shù))3. 使用聚類算法對(duì)樣本進(jìn)行聚類4. 打印聚類結(jié)果大概過(guò)程可實(shí)現(xiàn)如下 Instances ins = null; Instances tempIns = null; SimpleKMeans KM = null; DistanceFunction disFun = null; try Fi

36、le file= new File("data.arff"); ArffLoader loader = new ArffLoader(); loader.setFile(file); ins = loader.getDataSet(); KM = new SimpleKMeans(); KM.setNumClusters(2); KM.buildClusterer(ins); tempIns = KM.getClusterCentroids(); System.out.println("CentroIds: " + tempIns); catch(Exc

37、eption e) e.printStackTrace(); 首先讀入樣本過(guò)程比較簡(jiǎn)單可以調(diào)用ArffLoader()函數(shù)和setFile()函數(shù)以及getDataSet()函數(shù)等在構(gòu)建聚類器時(shí)也是通過(guò)現(xiàn)有的類來(lái)實(shí)現(xiàn)的。SimpleKMean是最簡(jiǎn)單的KMeans算法,因?yàn)榫垲愃惴ǖ暮诵氖峭ㄟ^(guò)距離來(lái)得到類別(類間相異,類內(nèi)相似),所以需要有一個(gè)計(jì)算距離的公式常見的就是歐幾里得距離了。將SimpleKMean計(jì)算距離的方法默認(rèn)為歐幾里得距離。Weka中提供了設(shè)置距離函數(shù)的接口setDistanceFunction(DistanceFunction df),可以方便我們?cè)O(shè)置自己的距離計(jì)算方法。在聚

38、類過(guò)程中將樣本的類別屬性放在里面是不符合常識(shí)的,因?yàn)闃颖绢悇e屬性包含了大量的類別信息,可能誘導(dǎo)聚類算法得到很好的效果。但是這與我們的初衷是相背離的,所以在聚類之前我們要記住刪除掉類別屬性。在第四步打印聚類結(jié)果是一個(gè)很簡(jiǎn)單的信息,里面包括了聚類的幾個(gè)中心點(diǎn)。在寫程序時(shí)可以使用ClusterEvaluation類來(lái)打印更多的信息。3.4.5 擴(kuò)展Weka算法在擴(kuò)展之前Weka中的聚類算法如下圖顯然沒有實(shí)驗(yàn)所需的FCM模糊聚類算法,因此需要通過(guò)擴(kuò)展加入FCM聚類算法。了解Weka聚類器的相關(guān)接口,是在Weka中實(shí)現(xiàn)擴(kuò)展聚類方法的基礎(chǔ)。Weakclusterers包里邊放的就是各種聚類算法以及聚類器接口和評(píng)估器接口,其中有K-means、EM、Cobweb、DBScan等算法,分析Weka的源代碼中可以得到,core包是Weka的核心,gui包是處理圖形界面等。最重要的是Weka.core包。該包中又有3個(gè)類是重中之重,實(shí)現(xiàn)首先就從這里入手。這3個(gè)類是Instances(實(shí)例集)類,Attribute(屬性)類和Instance(實(shí)例)類,Weka里邊的每個(gè)算法都會(huì)用到這3個(gè)類。聚類器類結(jié)構(gòu)是實(shí)現(xiàn)聚類算法的另一個(gè)關(guān)鍵。在了解Weka聚類器的接口之后,就可以在Weka中設(shè)計(jì)與實(shí)現(xiàn)新的聚類分析方法。要把新編寫的聚類算法容入Weka中,需要相應(yīng)的Waka中的包和Java的包。下面介紹

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論