




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
精心整理精心整理精心整理精心整理精心整理精心整理模糊C均值聚類算法的實(shí)現(xiàn)研究背景聚類分析是多元統(tǒng)計(jì)分析的一種,也是無監(jiān)督模式識別的一個(gè)重要分支,在模式分類圖像處理和模糊規(guī)則處理等眾多領(lǐng)域中獲得最廣泛的應(yīng)用。它把一個(gè)沒有類別標(biāo)記的樣本按照某種準(zhǔn)則劃分為若干子集,使相似的樣本盡可能歸于一類,而把不相似的樣本劃分到不同的類中。硬聚類把每個(gè)待識別的對象嚴(yán)格的劃分某類中,具有非此即彼的性質(zhì),而模糊聚類建立了樣本對類別的不確定描述,更能客觀的反應(yīng)客觀世界,從而成為聚類分析的主流。模糊聚類算法是一種基于函數(shù)最優(yōu)方法的聚類算法,使用微積分計(jì)算技術(shù)求最優(yōu)代價(jià)函數(shù),在基于概率算法的聚類方法中將使用概率密度函數(shù),為此要假定合適的模型,模糊聚類算法的向量可以同時(shí)屬于多個(gè)聚類,從而擺脫上述問題。模糊聚類分析算法大致可分為三類分類數(shù)不定,根據(jù)不同要求對事物進(jìn)行動(dòng)態(tài)聚類,此類方法是基于模糊等價(jià)矩陣聚類的,稱為模糊等價(jià)矩陣動(dòng)態(tài)聚類分析法。分類數(shù)給定,尋找出對事物的最佳分析方案,此類方法是基于目標(biāo)函數(shù)聚類的,稱為模糊C均值聚類。在攝動(dòng)有意義的情況下,根據(jù)模糊相似矩陣聚類,此類方法稱為基于攝動(dòng)的模糊聚類分析法我所學(xué)習(xí)的是模糊C均值聚類算法,要學(xué)習(xí)模糊C均值聚類算法要先了解慮屬度的含義,隸屬度函數(shù)是表示一個(gè)對象x隸屬于集合A的程度的函數(shù),通常記做》(x),其自變量范圍是所有可能A屬于集合A的對象(即集合A所在空間中的所有點(diǎn)),取值范圍是[0,1],即0〈二口(x)<=1。口(x)=1表示x完全隸屬于集合A,相當(dāng)于傳統(tǒng)集合概念上的xWA。一個(gè)定義在空間X={:}上的隸屬度函數(shù)就定義了一個(gè)模糊集合A,或者叫定義在論域X={x}上的模糊子集A。對于有限個(gè)對象x,x,,12x模糊集合A可以表示為:nA二{(卩(x),x)IxeX}(6.1)Aiii有了模糊集合的概念,一個(gè)元素隸屬于模糊集合就不是硬性的了,在聚類的問題中,可以把聚類生成的簇看成模糊集合,因此,每個(gè)樣本點(diǎn)隸屬于簇的隸屬度就是[0,1]區(qū)間里面的值。FCM算法需要兩個(gè)參數(shù)一個(gè)是聚類數(shù)目C,另一個(gè)是參數(shù)m。一般來講C要遠(yuǎn)遠(yuǎn)小于聚類樣本的總個(gè)數(shù),同時(shí)要保證C>1。對于m,它是一個(gè)控制算法的柔性的參數(shù),如果m過大,則聚類效果會(huì)很次,而如果m過小則算法會(huì)接近HCM聚類算法。算法的輸出是C個(gè)聚類中心點(diǎn)向量和C*N的一個(gè)模糊劃分矩陣,這個(gè)矩陣表示的是每個(gè)樣本點(diǎn)屬于每個(gè)類的隸屬度。根據(jù)這個(gè)劃分矩陣按照模糊集合中的最大隸屬原則就能夠確定每個(gè)樣本點(diǎn)歸為哪個(gè)類。聚類中心表示的是每個(gè)類的平均特征,可以認(rèn)為是這個(gè)類的代表點(diǎn)。從算法的推導(dǎo)過程中我們不難看出,算法對于滿足正態(tài)分布的數(shù)據(jù)聚類效果會(huì)很好,另外,算法對孤立點(diǎn)是敏感的。聚類算法是一種比較新的技術(shù),基于曾次的聚類算法文獻(xiàn)中最早出現(xiàn)的Single-Linkage層次聚類算法是1957年在Lloyd的文章中最早出現(xiàn)的,之后MacQueen獨(dú)立提出了經(jīng)典的模糊C均值聚類算法,F(xiàn)CM算法中模糊劃分的概念最早起源于Ruspini的文章中,但關(guān)于FCM的算法的詳細(xì)的分析與改進(jìn)則是由Dunn和Bezdek完成的。模糊c均值聚類算法因算法簡單收斂速度快且能處理大數(shù)據(jù)集,解決問題范圍廣,易于應(yīng)用計(jì)算機(jī)實(shí)現(xiàn)等特點(diǎn)受到了越來越多人的關(guān)注,并應(yīng)用于各個(gè)領(lǐng)域。精心整理精心整理精心整理精心整理精心整理算法描述模糊C均值聚類算法的步驟還是比較簡單的,模糊C均值聚類(FCM),即眾所周知的模糊ISODATA,是用隸屬度確定每個(gè)數(shù)據(jù)點(diǎn)屬于某個(gè)聚類的程度的一種聚類算法。1973年,Bezdek提出了該算法,作為早期硬C均值聚類(HCM)方法的一種改進(jìn)。FCM把n個(gè)向量x(i=1,2,…,n)分為c個(gè)模糊組,并求每組的聚類中心,使得非相似性指標(biāo)的價(jià)值函數(shù)達(dá)到最小;FCM與HCM的主要區(qū)別在于FCM用模糊劃分,使得每個(gè)給定數(shù)據(jù)點(diǎn)用值在0,1間的隸屬度來確定其屬于各個(gè)組的程度。與引入模糊劃分相適應(yīng),隸屬矩陣U允許有取值在0,1間的元素。不過,加上歸一化規(guī)定,一個(gè)數(shù)據(jù)集的隸屬度的和總等于1:才u=1,X/j=1,???,n(6.9)iji=1J(U,c,???,cJ(U,c,???,c)=£J=umd2,(6.10)1ciijijTOC\o"1-5"\h\zcii=1i=1j這里u介于0,1間;c為模糊組I的聚類中心,d=||c-x||為第I個(gè)聚類中心與第j個(gè)數(shù)據(jù)點(diǎn)ijiijij間的歐幾里德距離;且m71,4是一個(gè)加權(quán)指數(shù)。構(gòu)造如下新的目標(biāo)函數(shù),可求得使(6.10)式達(dá)到最小值的必要條件:J(U,c,???,c,尢,???,尢)=J(U,c,???,c)+£n九(£u-1)(6.11)6.10)(6.12)1c1n1cj=1jj(6.11)6.10)(6.12)i=1=Umd2+(^^u—1)jjjji=1jj=1i=1這里?.,j=1到n,是(6.9)式的n個(gè)約束式的拉格朗日乘子。對所有輸入?yún)⒘壳髮?dǎo),使式達(dá)到最小的必要條件為:£umXijjc=j=1umijj=1u=—(/£\2/(m-1)u=—(/£\2/(m-1)(6.13)k=1'kj丿由上述兩個(gè)必要條件,模糊C均值聚類算法是一個(gè)簡單的迭代過程。在批處理方式運(yùn)行時(shí),F(xiàn)CM用下列步驟確定聚類中心c和隸屬矩陣U[1]:步驟1:用值在0,1間的隨機(jī)數(shù)初始化隸屬矩陣U,使其滿足式(6.9)中的約束條件步驟2:用式(6.12)計(jì)算c個(gè)聚類中心c,i=1,…,c。步驟3:根據(jù)式(6.10)計(jì)算價(jià)值函數(shù)。如果它小于某個(gè)確定的閥值,或它相對上次價(jià)值函數(shù)值的改變量小于某個(gè)閥值,則算法停止。步驟4:用(6.13)計(jì)算新的U矩陣。返回步驟2。上述算法也可以先初始化聚類中心,然后再執(zhí)行迭代過程。由于不能確保FCM收斂于一個(gè)最優(yōu)解。算法的性能依賴于初始聚類中心。因此,我們要么用另外的快速算法確定初始聚類中心,要么精心整理精心整理精心整理精心整理精心整理精心整理精心整理精心整理每次用不同的初始聚類中心啟動(dòng)該算法,多次運(yùn)行FCM。模糊c均值聚類算法如下:Reapedtfor1=123Step1:computethecluseterprototypes(means):Step2:competethedistance:Step3:Updatethepartitionmatrix:算法改進(jìn)在模糊聚類的目標(biāo)函數(shù)中Bezdek引入了加權(quán)指數(shù)M使Dum的聚類準(zhǔn)則變成m=2時(shí)候的特例,從數(shù)學(xué)上說m的出現(xiàn)不自然且沒有必要,但如果不給以慮屬度乘以權(quán)值,那么從硬聚類準(zhǔn)則函數(shù)到軟聚類目標(biāo)函數(shù)的推廣準(zhǔn)則是無效的,參數(shù)m又稱為平滑因子,控制著模式早模糊類間的分享程度,因此,要實(shí)現(xiàn)模糊c聚類就要選擇一適合的m,然而最佳的m的選取目前還缺乏理論,監(jiān)管存在一些經(jīng)驗(yàn)值或經(jīng)驗(yàn)范圍,但沒有面向問題的優(yōu)選方法,也缺少參數(shù)m的有效性評價(jià)準(zhǔn)則盡管模糊聚類是一種無監(jiān)督的分類,但現(xiàn)在的聚類算法卻=需要應(yīng)用聚類原型的先驗(yàn)條件,否則算法會(huì)產(chǎn)生誤導(dǎo),從未破壞算法的無監(jiān)督性和自動(dòng)化。因?yàn)槟:垲惸繕?biāo)是非凸的,而模糊C均值聚類算法的計(jì)算過程又是迭代爬山,一次很容易陷入局部極值點(diǎn),從而得不到最優(yōu)解或滿意解,同時(shí),大數(shù)據(jù)量下算法耗時(shí)也是困擾人們的一大難題,這2個(gè)問題目前還不能得到全面的解決。FCM類型的聚類算法屬于劃份方法,對于1組給定的樣本集,不管數(shù)據(jù)中有無聚類結(jié)構(gòu),也不問分類結(jié)果是否有效,總把數(shù)據(jù)劃分到C個(gè)子類中,換言之,現(xiàn)有的聚類分析與聚類趨勢,以及有效分析是隔離的分離得。FCM的聚類算法是針對特征空間中的點(diǎn)集設(shè)計(jì)的,對于特殊類型的數(shù)據(jù),比如在樣本每維特征的賦值不是一個(gè)數(shù),而是一個(gè)區(qū)間。集合和模糊數(shù)時(shí),F(xiàn)CM類型的算法無法直接處理模糊C均值聚類算法存在上述缺點(diǎn),改進(jìn)的算法正確率能達(dá)到更高。Fem算法在處理小數(shù)據(jù)集的時(shí)候是有效的,但隨著數(shù)據(jù)容量和維數(shù)的增加,迭代步驟會(huì)顯著增加,而且在迭代的每一步都要對整個(gè)數(shù)據(jù)集進(jìn)行操作,無法滿足數(shù)據(jù)挖掘時(shí)的需要。改進(jìn)算法的思想是首先采用隨機(jī)抽樣的辦法,從數(shù)據(jù)集中選取多個(gè)樣本,對每個(gè)樣本應(yīng)用FCM算法,將得到的結(jié)果作為初始群體,然后再利用遺傳算法對聚類結(jié)果進(jìn)行優(yōu)化,選取其中的最優(yōu)解做為問題的輸出,由于采樣技術(shù)顯著的壓縮了問題的規(guī)模,而遺傳又可以對結(jié)果進(jìn)行全局最優(yōu)化處理,因此在時(shí)間性能和聚類質(zhì)量上都能獲得較滿意的結(jié)果。遺傳算法是美國Michigon大學(xué)的JohnHolland研究機(jī)器學(xué)習(xí)時(shí)創(chuàng)立的一種新型的優(yōu)化算法,它的主要優(yōu)點(diǎn)是:遺傳算法是從一系列點(diǎn)的群體開始搜索而不是從單個(gè)樣本點(diǎn)進(jìn)行搜索,遺傳算法利用適應(yīng)值的相關(guān)信息,無需連續(xù)可導(dǎo)或其他輔助信息,遺傳算法利用轉(zhuǎn)移概率規(guī)則,而非確定性規(guī)則進(jìn)行迭代,遺傳算法搜索過程中,以對群體進(jìn)行分化以實(shí)現(xiàn)并行運(yùn)算,遺傳算法經(jīng)過遺傳變異和雜交算子的作用,以保證算法以概率1收斂到全局最優(yōu)解一具有較好的全局特性,其次遺傳算法占用計(jì)算機(jī)的內(nèi)存小,尤其適用計(jì)算復(fù)雜的非線性問題。遺傳算法的設(shè)計(jì)部分種群中個(gè)體的確定聚類的關(guān)鍵問題是聚類中心的確定,因此可以選取聚類中心作為種群的個(gè)體,由于共有C個(gè)聚類中心,而每個(gè)聚類中心是一個(gè)S維的實(shí)數(shù)向量,因此每個(gè)個(gè)體的初始值是一個(gè)c*s維的市屬向量。編碼常用的編碼方式有二進(jìn)制與實(shí)數(shù)編碼,由于二進(jìn)制編碼的方式搜索能力最強(qiáng),且交叉變異操作簡單高效,因此采用二進(jìn)制的編碼方式,同時(shí)防止在進(jìn)行交叉操作時(shí)對優(yōu)良個(gè)體造成較大的破壞,在二進(jìn)制編碼的方式中采用格雷碼的編碼形式。每個(gè)染色體含c*s個(gè)基因鏈,每個(gè)基因鏈代表一維的數(shù)據(jù),由于原始數(shù)據(jù)中各個(gè)屬性的取值可能相差很大,因此需首先對數(shù)據(jù)進(jìn)行交換以統(tǒng)一基因鏈的長度,可以有以下兩種變換方式。1掃描整個(gè)數(shù)據(jù)集,確定每維數(shù)據(jù)的取值范圍,然后將其變換到同一量級,在保留一定有效位的基礎(chǔ)上取整,根據(jù)有效位的個(gè)數(shù)動(dòng)態(tài)的計(jì)算出基因鏈的長度。2對數(shù)據(jù)進(jìn)行正規(guī)化處理,即將各維數(shù)據(jù)都變換到相同的區(qū)間,可以算出此時(shí)的基因鏈長度為10。(3)適應(yīng)度函數(shù)由于在算法中只使用了聚類中心V,而未使用慮屬矩陣u,因此需要對FCM聚類算法的目標(biāo)函數(shù)進(jìn)行改進(jìn),以適用算法的要求,-丄幺丿和目標(biāo)函數(shù)是等價(jià)的,由于遺傳算法的適用度一般取值極大,因此可取上式的倒數(shù)作為算法的使用度函數(shù)。(4)初始種群的確定初始種群的一般個(gè)體由通過采樣后運(yùn)行FCM算法得到的結(jié)果給出,另外的一般個(gè)體通過隨機(jī)指定的方法給出,這樣既保證了遺傳算法在運(yùn)算之初就利用背景知識對初始群體的個(gè)體進(jìn)行了優(yōu)化,使算法能在一個(gè)較好的基礎(chǔ)上進(jìn)行,又使得個(gè)體不至于過分集中在某一取值空間,保證了種群的多樣性。(5)遺傳操作選擇操作采用保持最優(yōu)的錦標(biāo)賽法,錦標(biāo)賽規(guī)模為2,即每次隨機(jī)取2個(gè)個(gè)體,比較其適應(yīng)度,較大的作為父個(gè)體,并保留每代的最優(yōu)個(gè)體作為下一代,交叉方式一般采用單點(diǎn)交叉或多點(diǎn)交叉法進(jìn)行,經(jīng)過試驗(yàn)表明單點(diǎn)交叉效果較好,因此采用單點(diǎn)交叉法,同時(shí)在交叉操作中,應(yīng)該對每維數(shù)據(jù)分開進(jìn)行,以保證較大的搜索空間和結(jié)果的有效性,變異操作采用基本位變異法。(6)終止條件的確定遺傳算法在以下二種情況下終止a最佳個(gè)體保持不變的代數(shù)達(dá)到設(shè)定的閾值b遺傳操作以到達(dá)給定的最大世代數(shù)算法具體步驟如下1確定參數(shù),如聚類個(gè)數(shù)樣本集大小種群規(guī)模最大世代數(shù)交叉概率和變異概率等。2對數(shù)據(jù)集進(jìn)行多次采樣并運(yùn)行FCM算法,得到初始種群的一般個(gè)體,通過隨機(jī)制定產(chǎn)生另一半個(gè)體。3對數(shù)據(jù)集進(jìn)行正規(guī)化處理并編碼。4計(jì)算初始種群中個(gè)體的適應(yīng)度。5對種群進(jìn)行遺傳操作產(chǎn)生下一代,在操作的過程中,應(yīng)該排除產(chǎn)生的無效個(gè)體。6計(jì)算個(gè)體的適應(yīng)度,如果滿足終止條件,則算法結(jié)束,否則轉(zhuǎn)到5繼續(xù)在理論上講進(jìn)行遺傳操作的樣本容量越大,聚類的誤差越小,由于采樣技術(shù)顯著壓縮了問題規(guī)模,而遺傳算法又可以對全局進(jìn)行最優(yōu)化處理,因此改進(jìn)的算法在時(shí)間與性能上都能獲得較滿意的結(jié)果,此算法利用采樣技術(shù)來提高算法的運(yùn)行速度,利用遺傳算法對聚類進(jìn)行優(yōu)化,避免陷入局部最優(yōu)解,在性能上相比于傳統(tǒng)的模糊C均值聚類算法獲得較大提高。算法實(shí)現(xiàn)?米用VC++進(jìn)行編寫文檔的讀取#include"data.h"http://函數(shù)定義double**DataRead(char*name,introw,intcol){double**p=newdouble*[row];ifstreaminfile;infile.open(name,ios::in);for(inti=0;i<row;i++){p[i]=newdouble[col];for(intj=0;j<col;j++){infile?p[i][j];}}infile.close();cout<<"成功讀取數(shù)據(jù)文件:"<<name<<"!\n";returnp;//釋放內(nèi)存for(i=0;i<row;i++){delete[]p[i];}delete[]p;}文檔的保存#include"data.h"voidDataSave(double**data,introw,intcol,char*name){inti,j;ofstreamoutfile;//打開文件,輸出數(shù)據(jù)outfile.open(name,ios::out);outfile.setf(ios::fixed);outfile.precision(4);for(i=0;i<row;i++){for(j=0;j<col;j++){outfile<<data[i][j]<<"";}outfile<<endl;}outfile<<endl<<endl;outfile.close();}數(shù)據(jù)標(biāo)準(zhǔn)化處理#include"data.h"double**Standardize(double**data,introw,intcol){inti,j;double*a=newdouble[col];//矩陣每列的最大值double*b=newdouble[col];//矩陣每列的最小值double*c=newdouble[row];//矩陣列元素for(i=0;i<col;i++){//取出數(shù)據(jù)矩陣的各列元素for(j=0;j<row;j++){c[j]=Data[j][i];}a[i]=c[0],b[i]=c[0];for(j=0;j<row;j++){//取出該列的最大值if(c[j]>a[i]){a[i]=c[j];}//取出該列的最小值if(c[j]<b[i]){b[i]=c[j];}}}//數(shù)據(jù)標(biāo)準(zhǔn)化for(i=0;i<row;i++){for(j=0;j<col;j++){data[i][j]=(data[i][j]-b[j])/(a[j]-b[j]);}}cout<<"完成數(shù)據(jù)極差標(biāo)準(zhǔn)化處理!\n";delete[]a;delete[]b;delete[]c;returndata;}生成樣本慮屬矩陣#include"data.h"voidInitialize(double**u,intk,introw){inti,j;//初始化樣本隸屬度矩陣srand(time(0));for(i=0;i<k;i++){for(j=0;j<row;j++){u[i][j]=(double)rand()/RAND_MAX;//得到一個(gè)小于1的小數(shù)隸屬度}//rand()函數(shù)返回0和RAND_MAX之間的一個(gè)偽隨機(jī)數(shù)}}數(shù)據(jù)歸一化處理#include"data.h"voidNormalize(double**u,intk,intcol){inti,j;double*sum二newdouble[col];//矩陣U的各列元素之和for(j=0;j<col;j++){doubledj=0;for(i=0;i<k;i++){dj=dj+U[i][j];sum[j]=dj;//隸屬度各列之和}}for(i=0;i<k;i++){for(j=0;j<col;j++){u[i][j]=U[i][j]/sum[j];}//規(guī)一化處理(每列隸屬度之和為1)}}迭代過程#include"data.h"#include"func.h"http://對模糊C均值進(jìn)行迭代運(yùn)算,并返回有效性評價(jià)函數(shù)的值doubleUpdate(double**u,double**data,double**center,introw,intcol,intk){inti,j,t;double**p=NULL;精心整理精心整理精心整理精心整理精心整理精心整理精心整理for(i=0;i<k;i++){for(j=0;j<row;j++){//模糊指數(shù)取2u[i][j]=pow(u[i][j],2);}}//根據(jù)隸屬度矩陣計(jì)算聚類中心p=MatrixMul(u,k,row,data,row,col);for(i=0;i<k;i++){//計(jì)算隸屬度矩陣每行之和doublesi=0;for(j=0;j<row;j++){si+=u[i][j];}for(t=0;t<col;t++){center[i][t]二p[i][t]/si;//類中心}}//計(jì)算各個(gè)聚類中心i分別到所有點(diǎn)j的距離矩陣dis(i,j)double*a=newdouble[col];//第一個(gè)樣本點(diǎn)double*b=newdouble[col];//第二個(gè)樣本點(diǎn)double**dis二newdouble*[k];//中心與樣本之間距離矩陣for(i=0;i<k;i++){dis[i]=newdouble[row];}for(i=0;i<k;i++){//聚類中心for(t=0;t<col;t++){a[t]=center[i][t];//暫存類中心}//數(shù)據(jù)樣本for(j=0;j<row;j++){for(t=0;t<col;t++){b[t]=data[j][t];//暫存一樣本doubled=0;//中心與樣本之間距離的計(jì)算for(t=0;t<col;t++){d+=(a[t]-b[t])*(a[t]-b[t]);//d為一中心與所有樣本的距離的平方和}dis[i][j]=sqrt(d);//距離}}//根據(jù)距離矩陣計(jì)算隸屬度矩陣for(i=0;i<k;i++){for(j=0;j<row;j++){doubletemp=0;for(t=0;t<k;t++){//dis[i][j]依次除以所在列的各元素,加和;//模糊指數(shù)為2.0temp+=pow(dis[i][j]/dis[t][j],2/(2.0T));//—個(gè)類中心和一個(gè)元素的距離平方與}u[i][j]=1/temp;//所有類與該元素距離平方的和的商}}//計(jì)算聚類有效性評價(jià)函數(shù)doublefunc1=0;for(i=0;i<k;i++){doublefunc2=0;for(j=0;j<row;j++){func2+二pow(u[i][j],2.0)*pow(dis[i][j],2);}func1+=func2;}doubleobj_fcn=1/(1+func1);returnobj_fcn;//內(nèi)存釋放delete[]a;delete[]b;for(i=0;i<k;i++){delete[]dis[i];}精心整理delete[]dis;}詳細(xì)過程#include"data.h"#include"func.h"#include"max.h"http://全局變量定義double**Data;//數(shù)據(jù)矩陣double**Center;//聚類中心矩陣double**U;//樣本隸屬度矩陣intm;//樣本總數(shù)intn;//樣本屬性數(shù)intk;//設(shè)定的劃分類別數(shù)intmain(){intLab;//數(shù)據(jù)文件標(biāo)號intnum;//算法運(yùn)行次數(shù)///////////////////////////////////////////////////////////////cout<<"模糊C均值聚類算法:"<<endl;cout<<"1-iris.txt;2-wine.txt;3-ASD_12_2.txt;4-ASD_14_2.txt"<<endl;cout<<"請選擇數(shù)據(jù)集:Lab二";cin>>Lab;cout<〈"設(shè)定運(yùn)行次數(shù):mum二";cin>>num;//各次運(yùn)行結(jié)束后的目標(biāo)函數(shù)double*1ndex二newdouble[num];//各次運(yùn)行結(jié)束后的聚類正確率double*R=newdouble[num];//num次運(yùn)行的平均目標(biāo)函數(shù)及平均正確率doubleM_Index=0;doubleM_R=0;//FCM聚類算法運(yùn)行num次,并保存記錄與結(jié)果for(inti=0;i<num;i++){intj;doubleepsilon=1e-4;inte=0;intnx=0;//記錄連續(xù)無改進(jìn)次數(shù)intE[200]={0};if(i>0){cout<<endl<<endl;cout<<setfill('#')<<setw(10)<<endl;}精心整理精心整理精心整理精心整理精心整理精心整理精心整理精心整理cout<<"第"<<i+l<〈"次運(yùn)行記錄:"<<endl;//讀取數(shù)據(jù)文件if(Lab==1){m=150;n=4;k=3;Data=DataRead("dataset\\iris.txt",m,n);}elseif(Lab==2){m=178;n=13;k=3;Data二DataRead("dataset\\wine.txt",m,n);}elseif(Lab==3){m=535;n=2;k=12;Data=DataRead("dataset\\ASD_12_2.txt",m,n);}--elseif(Lab==4){m=685;n=2;k=14;Data=DataRead("dataset\\ASD_14_2.txt",m,n);}--//數(shù)據(jù)極差標(biāo)準(zhǔn)化處理Data=Standardize(Data,m,n);//聚類中心及隸屬度矩陣,內(nèi)存分配Center二newdouble*[k];U二newdouble*[k];for(j=O;j<k;j++){Center[j]=newdouble[n];U[j]=newdouble[m];}//隸屬度矩陣的初始化Initialize(U,k,m);//對隸屬度矩陣進(jìn)行歸一化Normalize(U,k,m);//歷次迭代過程中的目標(biāo)函數(shù)doubleObjfcn[100]={0};cout<〈"第"<<i+l<〈"次運(yùn)行記錄:"<<endl;cout<〈"開始迭代過程!"<<endl;cout<<"*******************************"<<endl;//輸出精度為小數(shù)點(diǎn)后5位cout.precision(5);//固定格式cout.setf(ios::fixed);//目標(biāo)函數(shù)連續(xù)20代無改進(jìn),停止該次聚類迭代過程while(e<20){nx++;//聚類迭代過程Objfcn[nx]二Update(U,Data,Center,m,n,k);//統(tǒng)計(jì)目標(biāo)函數(shù)連續(xù)無改進(jìn)次數(shù)eif(nx>0&&0bjfcn[nx]-Objfcn[nxT]<epsilon){e++;}else{e=0;}E[nx]=e;}//輸出結(jié)果到文件,保存ofstreamoutfile("運(yùn)行記錄.txt",ios::app);outfile<<"第"<<i+l<〈"次運(yùn)行記錄:"<<endl;outfile<〈"開始迭代過程!"<<endl;outfile<<"*******************************"<<endl;outfile.precision(5);outfile.setf(ios::fixed);for(intnl=l;nl〈二nx;nl++){cout<<"e["<<setw(2)<<n1<<"]二"<<setw(2)<<E[n1]<<"0bjfcn["<<setw(2)<<n1<<"]二"<<0bjfcn[n1]<<"\n";//保存數(shù)據(jù)文件outfile<<"e["<<setw(2)<<nl<<"]="<<setw(2)<<E[nl]<<"Objfcn["<<setw(2)<<nl<<"]="<<Objfcn[nl]<<"\n";}cout<<endl;outfile<<endl;outfile.close();//本次運(yùn)行的最大目標(biāo)函數(shù)Index[i]=Objfcn[nx];精心整理精心整理精心整理精心整理//保存聚類正確率,輸出聚類結(jié)果:R[i]=Result(Lab,U,k,m,i);//內(nèi)存釋放for(j=0;j<k;j++){delete[]Center[j];delete[]U[j];}delete[]Center;delete[]U;}//////////////////////////統(tǒng)計(jì)平均///////////////////////////////////doubletempi二0,temp2=0;for(i=0;i<num;i++){temp1+=Index[i];temp2+=R[i];}//計(jì)算各次結(jié)果的統(tǒng)計(jì)平均M_Index=(double)temp1/num;M_R=(double)temp2/num;c;ut<<〃//////////////////////////////////////////////////////////////〃<<endl;cout<<num<<〃次運(yùn)行,平均聚類正確率:〃<<100*M_R<<〃%〃<<endl;//輸出精度為小數(shù)點(diǎn)后6位cout.precision?);//固定格式cout.setf(ios::fixed);cout<<〃平均目標(biāo)函數(shù):〃<<M_Index<<endl;//統(tǒng)計(jì)結(jié)果文件保存ofstreamresultfile(〃聚類結(jié)果.txt〃,ios::app);resultfile<<〃//////////////////////////////////////////////////////////////〃<<endl;resultfile<<num<<〃次運(yùn)行,平均聚類正確率:〃<<100*M_R<<〃%〃<<endl;//輸出精度為小數(shù)點(diǎn)后6位resultfile.precision(6);//固定格式resultfile.setf(ios::fixed);resultfile<<〃平均目標(biāo)函數(shù):〃<<M_Index<<endl;return0;}采用著名的iris數(shù)據(jù)集對程序進(jìn)行測試,運(yùn)算次數(shù)輸入10次能對數(shù)組實(shí)現(xiàn)分類,但是分類正確率不是很理想,沒達(dá)到預(yù)期的90%以上總結(jié)這次綜合實(shí)習(xí),首先我學(xué)會(huì)了模糊C均值聚
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校圖書館圖書采購合同
- 工業(yè)品買賣合同范本(33篇)
- 2025年軟件服務(wù)與維護(hù)保養(yǎng)合同范本
- 2025年世界貨物買賣合同范文及實(shí)戰(zhàn)策略
- 2025年化妝品代理合作合同標(biāo)準(zhǔn)文本
- 2025年房產(chǎn)中介合作伙伴合同樣本
- 2025年居間服務(wù)費(fèi)用合同示范文本
- 個(gè)人借款合同書(用于買手機(jī))8篇
- 2025年公共交通服務(wù)特許經(jīng)營合同范文
- 2025年不動(dòng)產(chǎn)過戶公證合同
- 2022年鄭州衛(wèi)生健康職業(yè)學(xué)院單招英語模擬試題(附答案解析)
- Q∕GDW 10354-2020 智能電能表功能規(guī)范
- 小學(xué)數(shù)學(xué)四年級下冊培優(yōu)補(bǔ)差記錄
- 人教版三年級下冊體育與健康教案(全冊教學(xué)設(shè)計(jì))
- DB61∕T 5006-2021 人民防空工程標(biāo)識標(biāo)準(zhǔn)
- 土壤學(xué)習(xí)題與答案
- 產(chǎn)品結(jié)構(gòu)設(shè)計(jì)(課堂PPT)
- 第九課_靜止的生命
- 尖尖的東西我不碰(課堂PPT)
- 工程勘察和設(shè)計(jì)承攬業(yè)務(wù)的范圍
- 數(shù)字化影像與PACS教學(xué)大綱
評論
0/150
提交評論