




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、模*M C均值聚類算法的實(shí)現(xiàn)研究背景模糊聚類分析算法大致可分為三類1)分類數(shù)不定,根據(jù)不同要求對(duì)事物進(jìn)行動(dòng)態(tài)聚類, 此類方法是基于模糊等價(jià) 矩陣聚類的,稱為模糊等價(jià)矩陣動(dòng)態(tài)聚類分析法。2)分類數(shù)給定,尋找出對(duì)事物的最佳分析方案, 此類方法是基于目標(biāo)函數(shù)聚類 的,稱為模糊C均值聚類。3)在攝動(dòng)有意義的情況下,根據(jù)模糊相似矩陣聚類,此類方法稱為基于攝動(dòng)的 模糊聚類分析法聚類分析是多元統(tǒng)計(jì)分析的一種,也是無(wú)監(jiān)督模式識(shí)別的一個(gè)重要分支,在模 式分類圖像處理和模糊規(guī)則處理等眾多領(lǐng)域中獲得最廣泛的應(yīng)用。它把一個(gè)沒(méi) 有類別標(biāo)記的樣本按照某種準(zhǔn)則劃分為若干子集,使相似的樣本盡可能歸于一 類,而把不相似的樣本劃
2、分到不同的類中。 硬聚類把每個(gè)待識(shí)別的對(duì)象嚴(yán)格的劃 分某類中,具有非此即彼的性質(zhì),而模糊聚類建立了樣本對(duì)類別的不確定描述, 更能客觀的反應(yīng)客觀世界,從而成為聚類分析的主流。模糊聚類算法是一種基于函數(shù)最優(yōu)方法的聚類算法,使用微積分計(jì)算技術(shù)求 最優(yōu)代價(jià)函數(shù),在基于概率算法的聚類方法中將使用概率密度函數(shù),為此要假定合適的模型,模糊聚類算法的向量可以同時(shí)屬于多個(gè)聚類,從而擺脫上述問(wèn)題。我所學(xué)習(xí)的是模糊C均值聚類算法,要學(xué)習(xí)模糊C均值聚類算法要先了解慮 屬度的含義,隸屬度函數(shù)是表示一個(gè)對(duì)象x隸屬于集合A的程度的函數(shù),通常記 做N4x),其自變量范圍是所有可能屬于集合 A的對(duì)象(即集合A所在空間中的 所有
3、點(diǎn)),取值范圍是0,1,即0<=N A(x)<=1 。 N&x)=1表示x完全隸屬于集合 A,相當(dāng)于傳統(tǒng)集合概念上的xCA。一個(gè)定義在空間X=x上的隸屬度函數(shù)就定 義了一個(gè)模糊集合A,或者叫定義在論域X=x上的模糊子集Ao對(duì)于有限個(gè)對(duì) 象x1, x2,xn模糊集合A可以表示為: A=(A(x)xi)|xi X(6.1)有了模糊集合的概念,一個(gè)元素隸屬于模糊集合就不是硬性的了,在聚類的 問(wèn)題中,可以把聚類生成的簇看成模糊集合,因此,每個(gè)樣本點(diǎn)隸屬于簇的隸屬度就是0 ,1區(qū)間里面的值。FCMT法需要兩個(gè)參數(shù)一個(gè)是聚類數(shù)目 C,另一個(gè)是參數(shù) m 一般來(lái)講C要 遠(yuǎn)遠(yuǎn)小于聚類樣本的總
4、個(gè)數(shù),同時(shí)要保證 C>1。對(duì)于m它是一個(gè)控制算法的柔 性的參數(shù),如果 m過(guò)大,則聚類效果會(huì)很次,而如果 m過(guò)小則算法會(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)過(guò)程中我們不難看出,算法對(duì)于滿足正態(tài)分布的數(shù)據(jù)聚類效果會(huì)很 好,另外,算法對(duì)孤立點(diǎn)是敏感的。聚類算法是一種比較新的技術(shù),基于曾次的聚類算法文獻(xiàn)中最早出現(xiàn)的 Single-Linkage 層次聚類算法
5、是1957年在Lloyd的文章中最早出現(xiàn)的,之后 MacQueen蟲立提出了經(jīng)典的模糊C均值聚類算法,F(xiàn)CM#法中模糊劃分的概念最 早起源于Ruspini的文章中,但關(guān)于FCM勺算法的詳細(xì)的分析與改進(jìn)則是由 Dunn 和Bezdek完成的。模本c均值聚類算法因算法簡(jiǎn)單收斂速度快且能處理大數(shù)據(jù)集,解決問(wèn)題范圍廣,易于應(yīng)用計(jì)算機(jī)實(shí)現(xiàn)等特點(diǎn)受到了越來(lái)越多人的關(guān)注,并應(yīng)用于各個(gè)領(lǐng)域。算法描述模糊C均值聚類算法的步驟還是比較簡(jiǎn)單的,模糊C均值聚類(FCM,即眾所周知的模糊ISODATA是用隸屬度確定每個(gè)數(shù)據(jù)點(diǎn)屬于某個(gè)聚類的程度的一種 聚類算法。1973年,Bezdek提出了該算法,作為早期硬 C均值聚類
6、(HCM方法 的一種改進(jìn)。FCMf巴n個(gè)向量Xi (i=1,2,n)分為c個(gè)模糊組,并求每組的聚類中心, 使得非相似性指標(biāo)的價(jià)值函數(shù)達(dá)到最小。FCMf HCM勺主要區(qū)別在于FCMffl模糊 劃分,使得每個(gè)給定數(shù)據(jù)點(diǎn)用值在0,1間的隸屬度來(lái)確定其屬于各個(gè)組的程度。 與引入模糊劃分相適應(yīng),隸屬矩陣 U允許有取值在0, 1間的元素。不過(guò),加上 歸一化規(guī)定,一個(gè)數(shù)據(jù)集的隸屬度的和總等于1:cuij =1,-j =1,,n(6.9)i =1那么,F(xiàn)CM勺價(jià)值函數(shù)(或目標(biāo)函數(shù))就是式(6.2)的一般化形式:cc nJ(U ,Ci,.,Cc) =£ Ji =£ £ u;di2
7、,(6.10)i=1i W j這里uij介于0, 1問(wèn);Ci為模糊組I的聚類中心,dij =|c i-Xj|為第I個(gè)聚類中 心與第j個(gè)數(shù)據(jù)點(diǎn)問(wèn)的歐幾里德距離;且 mw 1產(chǎn))是一個(gè)加權(quán)指數(shù)。構(gòu)造如下新的目標(biāo)函數(shù),可求得使(6.10)式達(dá)到最小值的必要條件:_c(6.11)J(U ,C1,.,Cc, 1,., n)= J(U ,Ci,.,Cc)八,'jC uij -1) i=1c nnc' umdij2、 j(x uj -1)i W jj W i W這里, j=1到n,是(6.9)式的n個(gè)約束式的拉格朗日乘子。對(duì)所有輸入?yún)⒘?求導(dǎo),使式(6.10)達(dá)到最小的必要條件為:,. mU
8、ij Xjn一 mUijj坦(6.12)(6.13)由上述兩個(gè)必要條件,模本C均值聚類算法是一個(gè)簡(jiǎn)單的迭代過(guò)程。 在批處理方 式運(yùn)行時(shí),F(xiàn)CMffl下列步驟確定聚類中心c和隸屬矩陣U1:步驟1:用值在0, 1間的隨機(jī)數(shù)初始化隸屬矩陣 U,使其滿足式(6.9)中 的約束條件步驟2:用式(6.12)計(jì)算c個(gè)聚類中心Ci, i=1,c。步驟3:根據(jù)式(6.10)計(jì)算價(jià)值函數(shù)。如果它小于某個(gè)確定的閥值,或它 相對(duì)上次價(jià)值函數(shù)值的改變量小于某個(gè)閥值,則算法停止。步驟4:用(6.13)計(jì)算新的U矩陣。返回步驟2。上述算法也可以先初始化聚類中心,然后再執(zhí)行迭代過(guò)程。由于不能確保FCM 收斂于一個(gè)最優(yōu)解。算法
9、的性能依賴于初始聚類中心。 因此,我們要么用另外的 快速算法確定初始聚類中心,要么每次用不同的初始聚類中心啟動(dòng)該算法,多次運(yùn)行FCM模糊c均值聚類算法如下:Reapeat for l=1 2 3Step 1:compute the cluseter prototypes(means):和_ £ I一自4Step 2:compete the distance:(4擊)2 = (rt -/(辦-p.) , t 石 i ( j1 W 4 W 71Step 3:Update the partition matrix:For i w k £ NIf (d法)'。for all
10、 i = 1,2£2A產(chǎn)m-D Otherwise= 0 if d&A > 0. and W 0t 1 j with±4n = i « iUntil II U- t/3D II < e算法改進(jìn)1) 在模糊聚類的目標(biāo)函數(shù)中 Bezdek引入了加權(quán)指數(shù) m使Dum的聚類準(zhǔn)則變成m=2時(shí)候的特例,從數(shù)學(xué)上說(shuō) m的出現(xiàn)不自然且沒(méi)有必要, 但如果不給以慮屬度乘以權(quán)值,那么從硬聚類準(zhǔn)則函數(shù)到軟聚類目標(biāo) 函數(shù)的推廣準(zhǔn)則是無(wú)效的,參數(shù)m又稱為平滑因子,控制著模式早模 糊類間的分享程度,因此,要實(shí)現(xiàn)模糊 c聚類就要選擇一適合的m 然而最佳的m的選取目前還缺乏理論
11、,監(jiān)管存在一些經(jīng)驗(yàn)值或經(jīng)驗(yàn)范 圍,但沒(méi)有面向問(wèn)題的優(yōu)選方法,也缺少參數(shù) m的有效性評(píng)價(jià)準(zhǔn)則2) 盡管模糊聚類是一種無(wú)監(jiān)督的分類,但現(xiàn)在的聚類算法卻=需要應(yīng)用聚類原型的先驗(yàn)條件,否則算法會(huì)產(chǎn)生誤導(dǎo),從未破壞算法的無(wú)監(jiān)督 性和自動(dòng)化。3) 因?yàn)槟:垲惸繕?biāo)是非凸的,而模糊C均值聚類算法的計(jì)算過(guò)程又是迭代爬山,一次很容易陷入局部極值點(diǎn),從而得不到最優(yōu)解或滿意解, 同時(shí),大數(shù)據(jù)量下算法耗時(shí)也是困擾人們的一大難題,這2個(gè)問(wèn)題目前還不能得到全面的解決。4) FC峨型的聚類算法屬于劃份方法,對(duì)于 1組給定的樣本集,不管數(shù)據(jù)中有無(wú)聚類結(jié)構(gòu),也不問(wèn)分類結(jié)果是否有效,總把數(shù)據(jù)劃分到C個(gè) 子類中,換言之,現(xiàn)有的聚類
12、分析與聚類趨勢(shì),以及有效分析是隔離 的分離得。5) FCM勺聚類算法是針對(duì)特征空間中的點(diǎn)集設(shè)計(jì)的,對(duì)于特殊類型的數(shù)據(jù),比如在樣本每維特征的賦值不是一個(gè)數(shù),而是一個(gè)區(qū)間。集合和 模糊數(shù)時(shí),F(xiàn)C滋型的算法無(wú)法直接處理模糊C均值聚類算法存在上述缺點(diǎn),改進(jìn)的算法正確率能達(dá)到更高。Fcm算法在處理小數(shù)據(jù)集的時(shí)候是有效的,但隨著數(shù)據(jù)容量和維數(shù)的增加,迭代 步驟會(huì)顯著增加,而且在迭代的每一步都要對(duì)整個(gè)數(shù)據(jù)集進(jìn)行操作,無(wú)法滿 足數(shù)據(jù)挖掘時(shí)的需要。改進(jìn)算法的思想是首先采用隨機(jī)抽樣的辦法,從數(shù)據(jù)集中選取多個(gè)樣本,對(duì)每個(gè)樣本應(yīng)用FCMT法,將得到的結(jié)果作為初始群體,然后再利用遺傳算 法對(duì)聚類結(jié)果進(jìn)行優(yōu)化,選取其中的
13、最優(yōu)解做為問(wèn)題的輸出,由于采樣技術(shù) 顯著的壓縮了問(wèn)題的規(guī)模,而遺傳又可以對(duì)結(jié)果進(jìn)行全局最優(yōu)化處理,因此 在時(shí)間性能和聚類質(zhì)量上都能獲得較滿意的結(jié)果。遺傳算法是美國(guó)Michigon大學(xué)的John Holland研究機(jī)器學(xué)習(xí)時(shí)創(chuàng)立的 一種新型的優(yōu)化算法,它的主要優(yōu)點(diǎn)是:遺傳算法是從一系列點(diǎn)的群體開始 搜索而不是從單個(gè)樣本點(diǎn)進(jìn)行搜索,遺傳算法利用適應(yīng)值的相關(guān)信息,無(wú)需 連續(xù)可導(dǎo)或其他輔助信息,遺傳算法利用轉(zhuǎn)移概率規(guī)則,而非確定性規(guī)則進(jìn) 行迭代,遺傳算法搜索過(guò)程中,以對(duì)群體進(jìn)行分化以實(shí)現(xiàn)并行運(yùn)算,遺傳算 法經(jīng)過(guò)遺傳變異和雜交算子的作用, 以保證算法以概率1收斂到全局最優(yōu)解 一具有較好的全局特性,其次遺
14、傳算法占用計(jì)算機(jī)的內(nèi)存小,尤其適用計(jì)算 復(fù)雜的非線性問(wèn)題。遺傳算法的設(shè)計(jì)部分(1)種群中個(gè)體的確定聚類的關(guān)鍵問(wèn)題是聚類中心的確定,因此可以選取聚類中心作為種群的個(gè)體,由于共有C個(gè)聚類中心,而每個(gè)聚類中心是一個(gè) S維的實(shí)數(shù) 向量,因此每個(gè)個(gè)體的初始值是一個(gè) c*s維的市屬向量。(2)編碼常用的編碼方式有二進(jìn)制與實(shí)數(shù)編碼,由于二進(jìn)制編碼的方式搜索 能力最強(qiáng),且交叉變異操作簡(jiǎn)單高效,因此采用二進(jìn)制的編碼方式,同 時(shí)防止在進(jìn)行交叉操作時(shí)對(duì)優(yōu)良個(gè)體造成較大的破壞,在二進(jìn)制編碼的 方式中采用格雷碼的編碼形式。每個(gè)染色體含c*s個(gè)基因鏈,每個(gè)基因鏈代表一維的數(shù)據(jù),由于原 始數(shù)據(jù)中各個(gè)屬性的取值可能相差很大,
15、因此需首先對(duì)數(shù)據(jù)進(jìn)行交換以 統(tǒng)一基因鏈的長(zhǎng)度,可以有以下兩種變換方式。1掃描整個(gè)數(shù)據(jù)集,確定每維數(shù)據(jù)的取值范圍,然后將其變換到同 一量級(jí),在保留一定有效位的基礎(chǔ)上取整,根據(jù)有效位的個(gè)數(shù)動(dòng)態(tài)的計(jì) 算出基因鏈的長(zhǎng)度。2對(duì)數(shù)據(jù)進(jìn)行正規(guī)化處理,即將各維數(shù)據(jù)都變換到相同的區(qū)間,可 以算出此時(shí)的基因鏈長(zhǎng)度為10。(3)適應(yīng)度函數(shù)由于在算法中只使用了聚類中心 V,而未使用慮屬矩陣u,因此需要 對(duì)FCM聚類算法的目標(biāo)函數(shù)進(jìn)行改進(jìn),以適用算法的要求, 八(尸)=刈士目KIM J和目標(biāo)函數(shù)是等價(jià)的,由于遺傳算法的適用度一般取值極大,因此可取上式的倒數(shù)作為算法的使用度函數(shù)。(4)初始種群的確定初始種群的一般個(gè)體由通
16、過(guò)采樣后運(yùn)行 FCM算法得到的結(jié)果給出, 另外的一般個(gè)體通過(guò)隨機(jī)指定的方法給出,這樣既保證了遺傳算法在運(yùn) 算之初就利用背景知識(shí)對(duì)初始群體的個(gè)體進(jìn)行了優(yōu)化,使算法能在一個(gè) 較好的基礎(chǔ)上進(jìn)行,又使得個(gè)體不至于過(guò)分集中在某一取值空間,保證 了種群的多樣性。(5)遺傳操作選擇操作采用保持最優(yōu)的錦標(biāo)賽法, 錦標(biāo)賽規(guī)模為2,即每次隨機(jī)取 2個(gè)個(gè)體,比較其適應(yīng)度,較大的作為父?jìng)€(gè)體,并保留每代的最優(yōu)個(gè)體 作為下一代,交叉方式一般采用單點(diǎn)交叉或多點(diǎn)交叉法進(jìn)行,經(jīng)過(guò)試驗(yàn) 表明單點(diǎn)交叉效果較好,因此采用單點(diǎn)交叉法,同時(shí)在交叉操作中,應(yīng) 該對(duì)每維數(shù)據(jù)分開進(jìn)行,以保證較大的搜索空間和結(jié)果的有效性,變異 操作采用基本位變
17、異法。(6)終止條件的確定遺傳算法在以下二種情況下終止a最佳個(gè)體保持不變的代數(shù)達(dá)到設(shè)定的閾值b遺傳操作以到達(dá)給定的最大世代數(shù)算法具體步驟如下1確定參數(shù),如聚類個(gè)數(shù)樣本集大小種群規(guī)模最大世代數(shù)交叉概率 和變異概率等。2對(duì)數(shù)據(jù)集進(jìn)行多次采樣并運(yùn)行 FCMB法,得到初始種群的一般個(gè)體, 通過(guò)隨機(jī)制定產(chǎn)生另一半個(gè)體。3對(duì)數(shù)據(jù)集進(jìn)行正規(guī)化處理并編碼。4計(jì)算初始種群中個(gè)體的適應(yīng)度。5對(duì)種群進(jìn)行遺傳操作產(chǎn)生下一代,在操作的過(guò)程中,應(yīng)該排除產(chǎn)生的 無(wú)效個(gè)體。6計(jì)算個(gè)體的適應(yīng)度,如果滿足終止條件,則算法結(jié)束,否則轉(zhuǎn)到5繼續(xù)在理論上講進(jìn)行遺傳操作的樣本容量越大,聚類的誤差越小,由 于采樣技術(shù)顯著壓縮了問(wèn)題規(guī)模,而
18、遺傳算法又可以對(duì)全局進(jìn)行最優(yōu)化 處理,因此改進(jìn)的算法在時(shí)間與性能上都能獲得較滿意的結(jié)果,此算法 利用采樣技術(shù)來(lái)提高算法的運(yùn)行速度,利用遺傳算法對(duì)聚類進(jìn)行優(yōu)化, 避免陷入局部最優(yōu)解,在性能上相比于傳統(tǒng)的模糊 C均值聚類算法獲得 較大提高。算法實(shí)現(xiàn)米用VC+進(jìn)行編寫文檔的讀取#include "data.h"/函數(shù)定義double *DataRead(char*name,int row,int col)double *p=new double* row;ifstream infile;infile.open(name,ios:in);for(int i=0;i<row;i
19、+)pi=new doublecol;for(int j=0;j<col;j+)(infile>>pij;infile.close();cout<<"成功讀取數(shù)據(jù)文件:"<<name<<"!n"return p;/釋放內(nèi)存for(i=0;i<row;i+)(deletepi;deletep;文檔的保存#include "data.h"void DataSave(double*data,int row,int col,char*name) (int i,j;ofstream o
20、utfile;/打開文件,輸出數(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<<dataij<<" "outfile<<endl;outfile<<endl<<endl;outfile.close();數(shù)據(jù)標(biāo)準(zhǔn)化處理#include "data.h" double *Standardize(doub
21、le *data,int row,int col) (矩陣每列的最大值 矩陣每列的最小值 矩陣列元素int i,j;double* a=new doublecol; /double* b=new doublecol; /double* c=new doublerow; /for(i=0;i<col;i+)(/取出數(shù)據(jù)矩陣的各列元素 for(j=0;j<row;j+)(cj=Dataji;)ai=c0,bi=c0;for(j=0;j<row;j+)(/取出該列的最大值 if(cj>ai)(ai=cj;)/取出該列的最小值 if(cj<bi)(bi=cj;)/數(shù)據(jù)標(biāo)準(zhǔn)
22、化for(i=0;i<row;i+)(for(j=0;j<col;j+)(dataij=(dataij-bj)/(aj-bj);) )cout<<"完成數(shù)據(jù)極差標(biāo)準(zhǔn)化處理!n"deletea;deleteb;deletec;return data;)生成樣本慮屬矩陣#include "data.h"void Initialize(double *u, int k, int row) (int i,j;/初始化樣本隸屬度矩陣srand(time(0);for(i=0;i<k;i+) (for(j=0;j<row;j+)(
23、uij=(double)rand()/RAND_MAX;/得到一個(gè)小于 1 的小數(shù)隸屬度/rand() 函數(shù)返回0和RAND_MAX間的一個(gè)偽隨機(jī)數(shù) )數(shù)據(jù)歸一化處理#include "data.h"void Normalize(double *u,int k,int col) (int i,j;double *sum=new doublecol;/矩陣U的各列元素之和for(j=0;j<col;j+)(double dj=0;for(i=0;i<k;i+)dj=dj+Uij;sumj=dj;/隸屬度各列之和)for(i=0;i<k;i+)(for(j=0
24、;j<col;j+)(uij=Uij/sumj;)/規(guī)一兒處理(每列隸屬度之和為1)迭代過(guò)程#include "data.h"#include "func.h"/ 對(duì)模糊C均值進(jìn)行迭代運(yùn)算,并返回有效性評(píng)價(jià)函數(shù)的值 double Update(double*u,double*data,double*center,introw,int col,int k)(int i,j,t;double *p=NULL;for(i=0;i<k;i+) ( for(j=0;j<row;j+) ( 模糊指數(shù)取2 uij=pow(uij,2); )根據(jù)隸屬度
25、矩陣計(jì)算聚類中心p=MatrixMul(u,k,row,data,row,col);for(i=0;i<k;i+) (/計(jì)算隸屬度矩陣每行之和double si=0;for(j=0;j<row;j+) (si+=uij;for(t=0;t<col;t+)(centerit=pit/si; /類中心)j的距離矩陣dis(i,j)第一個(gè)樣本點(diǎn)第二個(gè)樣本點(diǎn)中心與樣本之間距離矩陣/計(jì)算各個(gè)聚類中心i分別到所有點(diǎn) double* a=new doublecol;/double* b=new doublecol;/double*dis=new double*k; /for(i=0;i&l
26、t;k;i+)(disi=new doublerow;)for(i=0; i<k; i+)(/聚類中心for(t=0; t<col; t+)(at=centerit; /暫存類中心)/數(shù)據(jù)樣本for(j=0; j<row; j+)(for(t=0; t<col; t+)( bt=datajt;/暫存一樣本)double d=0;/中心與樣本之間距離的計(jì)算for(t=0; t<col; t+)(d+=(at-bt)*(at-bt); /d為一中心與所有樣本的距離的平方和)disij=sqrt(d);/ 距離)根據(jù)距離矩陣計(jì)算隸屬度矩陣for(i=0;i<k;i
27、+)(for(j=0;j<row;j+)(double temp=0;for(t=0;t<k;t+)(/disij依次除以所在列的各元素,加和;一個(gè)類中心和模糊指數(shù)為2.0temp+=pow(disij/distj,2/(2.0-1);/一個(gè)元素的距離平方與)uij=1/temp;/所有類與該元素距離平方的和的商)/計(jì)算聚類有效性評(píng)價(jià)函數(shù)double func1=0;for(i=0;i<k;i+)(double func2=0;for(j=0;j<row;j+)(func2+=pow(uij,2.0)*pow(disij,2);)func1+=func2;)double
28、 obj_fcn=1/(1+func1);return obj_fcn;/內(nèi)存釋放 deletea;deleteb;for(i=0;i<k;i+)(deletedisi;deletedis;詳細(xì)過(guò)程#include "data.h"#include "func.h"#include "max.h"/全局變量定義double *Data;/double *Center;/double *U;/int m;/int n;/int k;/數(shù)數(shù)據(jù)矩陣 聚類中心矩陣 樣本隸屬度矩陣樣本總數(shù)樣本屬性數(shù)設(shè)定的劃分類別int main()(in
29、t Lab;int num;/數(shù)據(jù)文件標(biāo)號(hào)算法運(yùn)行次數(shù)/ cout<<"模糊C均值聚類算法:"<<endl;3-ASD_12_2.txt;cout<<"1-iris.txt;2-wine.txt;4-ASD_14_2.txt"<<endl;cout<<"請(qǐng)選擇數(shù)據(jù)集:Lab二";cin>>Lab;cout<<"設(shè)定運(yùn)行次數(shù):mum="; cin>>num;/各次運(yùn)行結(jié)束后的目標(biāo)函數(shù)double* Index=new do
30、ublenum;/各次運(yùn)行結(jié)束后的聚類正確率double* R=new double num;/num次運(yùn)行的平均目標(biāo)函數(shù)及平均正確率double M_Index=0;double M_R=0;/FCM聚類算法運(yùn)行num次,并保存記錄與結(jié)果for(int i=0;i<num;i+)int j;double epsilon=1e-4;int e=0;int nx=0;/記錄連續(xù)無(wú)改進(jìn)次數(shù)int E200=0;if(i>0)cout<<endl<<endl;cout<<setfill('#')<<setw(10)<&
31、lt;endl;cout<<"第"<<i+1<<"次運(yùn)行記錄:"<<endl;/讀取數(shù)據(jù)文件if(Lab=1)m=150;n=4;k=3;Data=DataRead("datasetiris.txt",m,n);else if(Lab=2)m=178; n=13;k=3;Data=DataRead("datasetwine.txt",m,n);)else if(Lab=3)(m=535;n=2;k=12;Data=DataRead("datasetASD_1
32、2_2.txt",m,n);)一 一else if(Lab=4)(m=685;n=2;k=14;Data=DataRead("datasetASD_14_2.txt",m,n);)一 一/數(shù)據(jù)極差標(biāo)準(zhǔn)化處理Data=Standardize(Data,m,n);/聚類中心及隸屬度矩陣,內(nèi)存分配Center=new double*k;U=new double *k;for(j=0;j<k;j+)(Centerj=new doublen;Uj=new doublem;)/隸屬度矩陣的初始化Initialize(U, k, m);/對(duì)隸屬度矩陣進(jìn)行歸一化Normal
33、ize(U,k,m);/歷次迭代過(guò)程中的目標(biāo)函數(shù) double Objfcn100=0;cout<<"第"<<i+1<<"次運(yùn)行記錄:"<<endl;cout<<"開始迭代過(guò)程!"<<endl;cout<<"I*”<<endl;/輸出精度為小數(shù)點(diǎn)后5位 cout.precision(5);/固定格式cout.setf(ios:fixed);/目標(biāo)函數(shù)連續(xù)20代無(wú)改進(jìn),停止該次聚類迭代過(guò)程while(e<20)nx+;/聚類迭
34、代過(guò)程Objfcnnx=Update(U,Data,Center,m,n,k);/統(tǒng)計(jì)目標(biāo)函數(shù)連續(xù)無(wú)改進(jìn)次數(shù) eif(nx>0 && Objfcnnx-Objfcnnx-1<epsilon )e+;elsee=0;Enx=e;/輸出結(jié)果到文件,保存ofstream outfile("運(yùn)行記錄.txt",ios:app);outfile<<" 第"<<i+1<<"次運(yùn)行記錄:"<<endl;outfile<<"開始迭代過(guò)程!"&l
35、t;<endl;outfile<<”*”<<endl;outfile.precision(5);outfile.setf(ios:fixed);for(int n1=1;n1<=nx;n1+)(cout<<"e"<<setw(2)<<n1<<"="<<setw(2)<<En1<<" Objfcn”<<setw(2)<<n1<<"="<<Objfcnn1<
36、<" n"/保存數(shù)據(jù)文件outfile<<"e"<<setw(2)<<n1<<"="<<setw(2)<<En1<<" Objfcn"<<setw(2)<<n1<<"="<<Objfcnn1<<" n"cout<<endl;outfile<<endl;outfile.close();/本次運(yùn)行的最大目標(biāo)函
37、數(shù) Indexi=Objfcnnx;/保存聚類正確率,輸出聚類結(jié)果: Ri=Result(Lab, U, k, m, i);/內(nèi)存釋放 for(j=0;j<k;j+)(deleteCenterj; deleteUj;deleteCenter;deleteU;/double temp1=0, temp2=0;for(i=0;i<num;i+)(temp1+=Indexi;temp2+=Ri;/計(jì)算各次結(jié)果的統(tǒng)計(jì)平均M_Index=(double)temp1/num;M_R=(double)temp2/num;cout<<"/"<<endl;
38、cout<<num<<"次運(yùn)行,平均聚類正確率:"<<100*M_R<<"%"<<endl;輸出精度為小數(shù)點(diǎn)后6位cout.precision(6);/固定格式cout.setf(ios:fixed);cout<<”平均目標(biāo)函數(shù):"<<M_Index<<endl;/統(tǒng)計(jì)結(jié)果文件保存ofstream resultfile("聚類結(jié)果.txt",ios二app);resulfile<<"/”<<end
39、l;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;return 0;采用著名的iris數(shù)據(jù)集對(duì)程序進(jìn)行測(cè)試,運(yùn)算次數(shù)輸入10次輸出笫10次運(yùn)行的聚類結(jié)果:第陵樣本:000000
40、000000000000000000000000000000000000000 00 0 0 0正確樣本數(shù):r(ght0=50錯(cuò)誤樣本數(shù):0聚類類別號(hào):s*=0笫1類樣本:21211111111111111111111111121111111121111111111111正確樣本數(shù):right。卜46錯(cuò)誤樣本數(shù)二4聚類類別號(hào)二sx=1第2類樣本:212222122222212222212121221222222112221222122 2 2 2 2 正確樣本數(shù):ight=38錯(cuò)誤樣本數(shù):12聚類類別號(hào):$x=2聚類正確率:89.3333%IHHHHHHHHIHHHHHIUHnHHHUHIHHHHIHnHI1畋運(yùn)行,平均聚類正確率:89.抬33%平均目標(biāo)函藪:0.160435能對(duì)數(shù)組實(shí)現(xiàn)分類,但是分類正確率不是很理想,沒(méi)達(dá)到預(yù)期的90%Z上總結(jié)這次綜合實(shí)習(xí),首先我學(xué)會(huì)了模糊C均值聚類算法,以前沒(méi)接觸過(guò),也不知 道何為數(shù)據(jù)集,數(shù)據(jù)集是做啥用的,增加了自己的見(jiàn)解,其次增強(qiáng)了自我學(xué)習(xí)能 力,平時(shí)學(xué)習(xí)的學(xué)習(xí)都是老師已經(jīng)安排好得內(nèi)容,看啥知識(shí)都已經(jīng)知道,只需要 安心的看就能學(xué)會(huì),都是書本上的知識(shí),沒(méi)有聯(lián)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZJBS 001-2024 城市公共標(biāo)識(shí)系統(tǒng)設(shè)計(jì)規(guī)范
- T-ZSA 230-2024 虛擬數(shù)字人多模態(tài)交互信息規(guī)范
- 二零二五年度荒山土地流轉(zhuǎn)與林業(yè)碳匯項(xiàng)目合作合同
- 二零二五年度企業(yè)合規(guī)管理體系法律服務(wù)合同范本
- 二零二五年度離婚協(xié)議書模板及婚姻關(guān)系終止及財(cái)產(chǎn)分配
- 二零二五年度診所醫(yī)療事故處理及責(zé)任劃分合同
- 二零二五年度養(yǎng)老護(hù)理型住宅正規(guī)房屋出租合同
- 二零二五年度混凝土班組勞務(wù)合作施工安全責(zé)任合同
- 二零二五年度銷售信息保密管理承諾書
- 2025年度耕地租賃與農(nóng)業(yè)科技推廣合同
- 2025年上半年江西宜春市事業(yè)單位招聘工作人員651人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年高一上學(xué)期期末數(shù)學(xué)試卷(新題型:19題)(基礎(chǔ)篇)(含答案)
- 高血壓課件教學(xué)課件
- 《鐵道概論(第二版)》 課件 第8章 鐵路運(yùn)輸組織
- lng加工合同范例
- 2024解析:第十六章電壓和電阻-基礎(chǔ)練(解析版)
- 湖北聯(lián)投集團(tuán)2024校園招聘【298人】管理單位遴選500模擬題附帶答案詳解
- 機(jī)柜 施工方案
- 設(shè)計(jì)質(zhì)量、進(jìn)度、安全、保密等管理方案及保障措施
- 單片機(jī)應(yīng)用技術(shù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 文藝復(fù)興史學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論