版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ( 屆)</b></p><p> 論文題目連續(xù)數(shù)據(jù)的離散化研究</p><p> 所在學(xué)院 </p><p> 專業(yè)班級(jí) 信息管理與信息系統(tǒng) </p>
2、<p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 日</p><p><b> 誠(chéng) 信 聲 明</b></p><p>
3、 我申明,所呈交的論文(設(shè)計(jì))是本人在老師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我查證,除了文中特別加以標(biāo)注和致謝的地方外,論文(設(shè)計(jì))中不包含其他人已經(jīng)發(fā)表或撰寫過(guò)的研究成果,也不包含為獲得______或其他教育機(jī)構(gòu)的學(xué)位或證書而使用過(guò)的材料。我承諾,論文(設(shè)計(jì))中的所有內(nèi)容均真實(shí)、可信。</p><p> 論文(設(shè)計(jì))作者簽名: 簽名日期: 年 月 日</p>&
4、lt;p><b> 授 權(quán) 聲 明</b></p><p> 學(xué)校有權(quán)保留送交論文(設(shè)計(jì))的原件,允許論文(設(shè)計(jì))被查閱和借閱,學(xué)校可以公布論文(設(shè)計(jì))的全部或部分內(nèi)容,可以影印、縮印或其他復(fù)制手段保存論文(設(shè)計(jì)),學(xué)校必須嚴(yán)格按照授權(quán)對(duì)論文(設(shè)計(jì))進(jìn)行處理,不得超越授權(quán)對(duì)論文(設(shè)計(jì))進(jìn)行任意處置。</p><p> 論文(設(shè)計(jì))作者簽名:
5、 簽名日期: 年 月 日</p><p> 連續(xù)數(shù)據(jù)的離散化研究</p><p> 中文摘要: 數(shù)據(jù)資源是21世紀(jì)的新興戰(zhàn)略資源,因此對(duì)數(shù)據(jù)資源進(jìn)行數(shù)據(jù)挖掘是非常重要的一項(xiàng)工作,而對(duì)連續(xù)數(shù)據(jù)進(jìn)行離散化處理是數(shù)據(jù)挖掘過(guò)程中必不可少的一項(xiàng)工作。連續(xù)數(shù)據(jù)的離散化研究作為一種相對(duì)比較新興的領(lǐng)域,其現(xiàn)有的算法還遠(yuǎn)沒(méi)有達(dá)到令人滿意的程度。因此,本人認(rèn)為對(duì)連續(xù)數(shù)據(jù)的離散化研究是當(dāng)今國(guó)內(nèi)的一
6、個(gè)重要的課題。本文闡述連續(xù)數(shù)據(jù)的離散化的研究現(xiàn)狀、研究方法、決策樹(shù)、幾種離散化方法。主要通過(guò)使用C4.5算法,在Visual Studio.NET編寫代碼來(lái)實(shí)現(xiàn)連續(xù)數(shù)據(jù)的離散化。</p><p> 關(guān)鍵詞:決策樹(shù);C4.5;離散化方法</p><p> The Research of Discretization of Continuous Data</p><p&
7、gt; Abstract: Data resource is the 21st century's emerging strategy resources, so data mining is a very important work, and the discretization of continuous data is a necessary job in data mining process. As a relat
8、ively new field, the existing algorithm of discretization of continuous data is far from reaching satisfactory degree. Therefore, I think the discretization of continuous data research a very important issue in the domes
9、tic. This paper expounds the present situation of research of discret</p><p> Key words: The decision tree;C4.5;Discretization method</p><p><b> 目錄</b></p><p><b>
10、; 第1章 緒論1</b></p><p> 1.1 選題背景及意義1</p><p> 1.2 研究的基本內(nèi)容1</p><p> 1.3 研究的基本方法2</p><p> 1.3.1 文獻(xiàn)分析法2</p><p> 1.3.2 面向?qū)ο蟪绦蛟O(shè)計(jì)3</p>
11、<p> 第2章 決策樹(shù)4</p><p> 2.1 決策樹(shù)4</p><p> 2.2 創(chuàng)建決策樹(shù)的步驟5</p><p> 第3章 數(shù)據(jù)離散化的幾類算法8</p><p> 3.1 離散化的基本算法和標(biāo)準(zhǔn)8</p><p> 3.1.1 離散化的基本算法8</
12、p><p> 3.1.2 離散化算法的標(biāo)準(zhǔn)8</p><p> 3.2 離散化算法的分類和比較8</p><p> 3.3 BMIC離散化算法9</p><p> 3.4 基于云模式連續(xù)型屬性離散化的算法10</p><p> 3.5 人工魚(yú)群算法11</p><p>
13、 第4章 BMIC離散化實(shí)現(xiàn)12</p><p> 4.1 開(kāi)發(fā)工具12</p><p> 4.1.1 整體功能12</p><p> 4.1.2 組件構(gòu)成12</p><p> 4.1.3 版本13</p><p> 4.2 BMIC設(shè)計(jì)13</p><p>
14、; 4.2.1 運(yùn)行界面13</p><p> 4.2.2 運(yùn)行結(jié)果14</p><p> 4.2.3 類15</p><p> 第5章 總結(jié)與展望24</p><p><b> 致 謝25</b></p><p><b> 參考文獻(xiàn)25</b&g
15、t;</p><p><b> 1 緒論</b></p><p> 1.1 選題背景及意義</p><p> 如今,隨著計(jì)算機(jī)的普及,網(wǎng)絡(luò)以及通訊等信息技術(shù)的高速發(fā)展,當(dāng)今社會(huì)已經(jīng)進(jìn)入了網(wǎng)絡(luò)信息時(shí)代。隨著計(jì)算機(jī)技術(shù)的高速發(fā)展,包括存儲(chǔ)技術(shù)、數(shù)據(jù)技術(shù)和網(wǎng)絡(luò)技術(shù)等信息處理方式,已經(jīng)人們對(duì)計(jì)算機(jī)的認(rèn)識(shí)和管理水平的提高,對(duì)信息的處理在整個(gè)社會(huì)
16、生產(chǎn)中實(shí)現(xiàn)規(guī)模產(chǎn)業(yè)化,在技術(shù)上表現(xiàn)為對(duì)大規(guī)模數(shù)據(jù)操作的產(chǎn)業(yè)化已經(jīng)得到實(shí)現(xiàn)。而且隨著存儲(chǔ)設(shè)備的單位價(jià)格不斷下跌而容量卻急劇地?cái)U(kuò)大,關(guān)系數(shù)據(jù)庫(kù)、對(duì)象數(shù)據(jù)庫(kù)、多媒體數(shù)據(jù)庫(kù)、地理信息數(shù)據(jù)庫(kù)和空間數(shù)據(jù)庫(kù)的不斷成熟并得到廣泛的應(yīng)用,數(shù)據(jù)庫(kù)管理系統(tǒng)的日益普及,這使得人們所積累的數(shù)據(jù)越來(lái)越多,并且數(shù)據(jù)與信息系統(tǒng)中的不確定性更加顯著。</p><p> 作為二十一世紀(jì)的重要資源,信息資源的價(jià)值已經(jīng)越來(lái)越得到人們重視,并且很多國(guó)家
17、把信息資源挖掘作為國(guó)家發(fā)展的一項(xiàng)重要指標(biāo)。海量的數(shù)據(jù)背后隱藏著許多重要的信息,但是目前的數(shù)據(jù)庫(kù)系統(tǒng)僅僅只能高效地實(shí)現(xiàn)數(shù)據(jù)的錄入、查詢、統(tǒng)計(jì)等功能,卻無(wú)法挖掘數(shù)據(jù)中存在的關(guān)系和規(guī)則,無(wú)法根據(jù)現(xiàn)在的數(shù)據(jù)預(yù)測(cè)未來(lái)的發(fā)展趨勢(shì),即缺乏挖掘數(shù)據(jù)背后隱藏關(guān)系的手段。因此,如何從大量的、雜亂無(wú)章的、有強(qiáng)干擾的數(shù)據(jù)中挖掘出數(shù)據(jù)背后又利用價(jià)值的信息,由此產(chǎn)生了人工智能研究的一個(gè)嶄新領(lǐng)域——數(shù)據(jù)挖掘(Data Mining,簡(jiǎn)稱DM)[1]。</p&g
18、t;<p> 在傳統(tǒng)的機(jī)器語(yǔ)言學(xué)習(xí)中,連續(xù)數(shù)據(jù)離散化技術(shù)被當(dāng)作邊緣性課題,因而沒(méi)有受到足夠的重視,但近年來(lái)隨著數(shù)據(jù)挖掘的不斷發(fā)展,數(shù)據(jù)離散化技術(shù)漸漸在數(shù)據(jù)挖掘技術(shù)中顯現(xiàn)出其不可替代的重要性,在規(guī)則提取、特征分類等這些算法中,特別是在應(yīng)用粗集理論進(jìn)行數(shù)據(jù)挖掘的研究中,連續(xù)屬性數(shù)據(jù)必須要進(jìn)行離散化處理,因此國(guó)內(nèi)的專家和學(xué)者開(kāi)始越來(lái)越關(guān)注連續(xù)數(shù)據(jù)的離散化[2]。</p><p> 對(duì)連續(xù)數(shù)據(jù)的離散化雖
19、不是什么研究的熱點(diǎn),然而它是對(duì)數(shù)據(jù)信息進(jìn)行預(yù)處理的一個(gè)重要部分。實(shí)際數(shù)據(jù)庫(kù)中存在較多的連續(xù)型屬性,而現(xiàn)有的很多數(shù)據(jù)挖掘方法只能處理離散型的屬性,因而需要對(duì)連續(xù)屬性進(jìn)行離散化。因此,連續(xù)數(shù)據(jù)離散化方法成為數(shù)據(jù)挖掘領(lǐng)域的重要性工作,直接影響數(shù)據(jù)挖掘的質(zhì)量。但作為一種相對(duì)比較新興的領(lǐng)域,其現(xiàn)有的算法還遠(yuǎn)沒(méi)達(dá)到令人滿意的程度。因此,對(duì)連續(xù)數(shù)據(jù)的離散化研究是當(dāng)今國(guó)內(nèi)的一個(gè)重要的課題。</p><p> 1.2 研究的基
20、本內(nèi)容</p><p> ?。?)本文主要對(duì)連續(xù)數(shù)據(jù)的離散化進(jìn)行研究,主要包括決策樹(shù)及決策樹(shù)的建立、離散化的幾種算法。</p><p> ?。?)學(xué)習(xí)幾種離散化的方法,采用BMIC的方法在Visual Studio.NET的編程環(huán)境下編寫代碼,并實(shí)現(xiàn)對(duì)連續(xù)數(shù)據(jù)的離散化。</p><p> 1.3 研究的基本方法</p><p> 本文采
21、用的研究方法有文獻(xiàn)分析法、面向?qū)ο蟪绦蛟O(shè)計(jì)兩種。</p><p> 1.3.1 文獻(xiàn)分析法</p><p> 文獻(xiàn)分析法主要指搜集、鑒別、整理文獻(xiàn),并通過(guò)對(duì)文獻(xiàn)的研究等途徑,形成對(duì)事實(shí)科學(xué)認(rèn)識(shí)的方法。由于文獻(xiàn)分析法和內(nèi)容分析法有共同的對(duì)象,都不與文獻(xiàn)中記載的人與事直接接觸,因此,都稱為非接觸性研究方法。</p><p> 現(xiàn)代對(duì)文獻(xiàn)的定義指的是“已經(jīng)發(fā)表過(guò)的
22、、或者雖未發(fā)表但已被整理、報(bào)導(dǎo)過(guò)的那些保存有知識(shí)等的一切載體”?!耙磺休d體”,包括期刊、圖書、科學(xué)報(bào)告、檔案、學(xué)位論文等常見(jiàn)的紙面印刷品,也包括有實(shí)物形態(tài)在內(nèi)的各種材料。</p><p> 從整理情況分類,文獻(xiàn)可以分為4類:</p><p> (1) 零次文獻(xiàn)(零次文獻(xiàn)指曾經(jīng)歷過(guò)特別事件或行為的人以撰寫的目的描述或使用其他方式的實(shí)況紀(jì)錄,是有意識(shí)處理的和未經(jīng)發(fā)表的最原始的資料,即pri
23、mary documents);</p><p> ?。?) 一次文獻(xiàn)(直接記錄事件經(jīng)過(guò)、調(diào)查報(bào)告、新知識(shí)、研究成果、論文、新技術(shù)的專著等文獻(xiàn));</p><p> ?。?) 二次文獻(xiàn)(對(duì)一次文獻(xiàn)進(jìn)行檢索性的文獻(xiàn));</p><p> ?。?)三次文獻(xiàn)(通過(guò)在利用二次文獻(xiàn)檢索的基礎(chǔ)上,系統(tǒng)地對(duì)一次文獻(xiàn)整理并概括論述等幾方面操作的文獻(xiàn))[3]。</p>
24、<p> 文獻(xiàn)分析法的方法有許多種,而常用到的方法是內(nèi)容分析法,內(nèi)容分析法的過(guò)程有建立研究目標(biāo)、確定研究總體和選擇分析單位、抽樣和量化分析材料、設(shè)計(jì)分析維度體系、進(jìn)行評(píng)判記錄和分析推論等幾部分的步驟。具體內(nèi)容如下:</p><p><b> (1) 研究目標(biāo)</b></p><p> 在現(xiàn)在教育科學(xué)研究中,內(nèi)容分析法運(yùn)用于多種研究目標(biāo)的研究工作。常用到
25、的類型有:現(xiàn)狀分析、趨勢(shì)分析、意向分析、比較分析。</p><p> ?。?) 設(shè)計(jì)分析維度及體系</p><p> 設(shè)計(jì)分析維度、類別有兩類基本方法,一是根據(jù)研究的目標(biāo),研究者自行設(shè)計(jì),二是采用現(xiàn)成的分析維度系統(tǒng)。</p><p> 分析維度(分析類目)是根據(jù)現(xiàn)有的研究需要而設(shè)計(jì)的將資料內(nèi)容進(jìn)行分類的項(xiàng)目和標(biāo)準(zhǔn)。</p><p> ?。?/p>
26、3) 抽取分析材料(抽樣)</p><p> 抽樣工作包括兩個(gè)方面的內(nèi)容:一是對(duì)總體進(jìn)行界定,二是從總體中抽取一些具有代表性的樣本。內(nèi)容分析法常用的三種抽樣方式是:分析單位取樣、日期抽樣、來(lái)源取樣。</p><p><b> ?。?) 量化處理</b></p><p> 量化處理就是把樣本從形式上轉(zhuǎn)化為數(shù)據(jù)化形式的過(guò)程,包括作評(píng)判記錄、進(jìn)行
27、信度分析等兩部分內(nèi)容。根據(jù)已確定的分析維度(類目)和分析單位,對(duì)樣本中的信息來(lái)進(jìn)行分類記錄,并且登記下每一個(gè)分析單位中分析維度(類目)的出現(xiàn)的頻率和判斷是否存在,這就是評(píng)判記錄[4]。</p><p> 1.3.2 面向?qū)ο蟪绦蛟O(shè)計(jì)</p><p> 面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。面向?qū)ο蟪绦蛟O(shè)計(jì)
28、中主要包括的概念:對(duì)象、數(shù)據(jù)抽象、類、繼承、多態(tài)性、數(shù)據(jù)封裝、動(dòng)態(tài)綁定、消息傳遞。面向?qū)ο蟮乃枷胪ㄟ^(guò)這些概念得到了具體的體現(xiàn)[5]。 </p><p> 對(duì)象:對(duì)象是具有數(shù)據(jù)、標(biāo)識(shí)和行為的編程結(jié)構(gòu),對(duì)象是運(yùn)行期的基本實(shí)體,它是一個(gè)數(shù)據(jù)封裝和這些數(shù)據(jù)的代碼操作的邏輯實(shí)體,對(duì)象數(shù)據(jù)包括在對(duì)象的字段、屬性和事件中。 </p><p> 類:類是對(duì)相同類型的對(duì)象的抽象。類像結(jié)構(gòu)一樣,類也定義
29、了數(shù)據(jù)類型的數(shù)據(jù)和行為,然后程序員可以創(chuàng)建作為此類的實(shí)例的對(duì)象。一個(gè)對(duì)象所包含的所有數(shù)據(jù)和代碼可以通過(guò)類來(lái)構(gòu)造。 </p><p> 封裝:將數(shù)據(jù)和代碼捆綁到起來(lái),以避免了外界的干擾和不確定性等因素,這就是封裝。同時(shí)對(duì)象的某些代碼和數(shù)據(jù)是私有的,且不能被外界訪問(wèn),通過(guò)封裝操作來(lái)實(shí)現(xiàn)數(shù)據(jù)和代碼不同級(jí)別設(shè)置的訪問(wèn)權(quán)限。 </p><p> 繼承:通過(guò)某個(gè)類型的對(duì)象來(lái)獲得其他類型的對(duì)象
30、的特征的過(guò)程就是對(duì)象的繼承。通過(guò)對(duì)象的繼承可以實(shí)現(xiàn)重用代碼,即從已存在的類中派生出的一個(gè)新類,并且繼承原來(lái)那個(gè)類的特性,同時(shí),它還可以創(chuàng)建自己的新特性。</p><p> 多態(tài):多態(tài)是指不同事物具有不同表現(xiàn)形式的能力。一個(gè)類可以用作多種類型,可以用作它自己的類型、任何基類型或者在實(shí)現(xiàn)接口時(shí)用作任何接口類型,這也稱作為多態(tài)性。具有不同內(nèi)部結(jié)構(gòu)的對(duì)象通過(guò)多態(tài)機(jī)制可以共享相同的外部接口,從而能夠減少代碼的復(fù)雜度。&l
31、t;/p><p> 方法:方法是包括一系列語(yǔ)句的代碼塊,是定義一個(gè)類可以做的,但不一定會(huì)去做的事。</p><p> 動(dòng)態(tài)綁定:調(diào)用一個(gè)過(guò)程并與相應(yīng)代碼鏈接起來(lái)的過(guò)程就是綁定。動(dòng)態(tài)綁定則是指,只有在運(yùn)行期,調(diào)用給定的過(guò)程中相關(guān)聯(lián)的代碼才可知的一種綁定,這是多態(tài)實(shí)現(xiàn)的具體形式。</p><p> 消息傳遞:消息傳遞指的是對(duì)象之間溝通的途徑就是對(duì)象之間進(jìn)行收發(fā)信息的過(guò)
32、程。消息內(nèi)容包括需要調(diào)用的函數(shù)的標(biāo)識(shí),接收消息的對(duì)象的標(biāo)識(shí),以及其他必要的信息。消息傳遞的概念讓面向?qū)ο蟪绦蛟O(shè)計(jì)對(duì)現(xiàn)實(shí)世界的描述變得更加簡(jiǎn)捷[5]。 </p><p><b> 2 決策樹(shù)</b></p><p> 決策樹(shù)是一種能夠直觀、清晰地表達(dá)加工的邏輯要求,用二叉樹(shù)形圖來(lái)表示處理邏輯的工具,尤其適合應(yīng)用于邏輯組合關(guān)系不復(fù)雜、判斷因素比較少的情況。許多機(jī)
33、器學(xué)習(xí)法采用的基本知識(shí)表達(dá)形式是決策樹(shù),也就是很多數(shù)據(jù)挖掘的輸出采用的形式。</p><p><b> 2.1 決策樹(shù)</b></p><p> 以下我們先引用一個(gè)決策樹(shù)的例子:隱形眼鏡</p><p><b> 表2-1視力檢查表</b></p><p> 圖2-1 關(guān)于視力診斷的決策樹(shù)
34、</p><p> 以上是一個(gè)簡(jiǎn)單化的模型:隱形眼鏡數(shù)據(jù),是通過(guò)給出的一些有關(guān)病人的信息,來(lái)告訴患者被推薦的隱形眼鏡類型。</p><p> 表2-1的第一列給出了患者的年齡,第二列給出了眼睛的診斷:myope是近視,Hypermetrope是遠(yuǎn)視;第三列顯示患者是否散光;第四列是有關(guān)眼淚的產(chǎn)生率,這是一個(gè)重要因素,因?yàn)殡[形眼鏡需要淚水潤(rùn)滑,最后一列顯示所推薦的隱形眼鏡的種類:hard
35、、soft或者none。這個(gè)表呈現(xiàn)了所有的屬性的組合。</p><p> 圖2-1以一個(gè)決策樹(shù)的形式展示了關(guān)于隱形眼鏡數(shù)據(jù)的結(jié)構(gòu)的表述,在多種用途上是一個(gè)更簡(jiǎn)練、明確了的規(guī)則表示法,并且有更加便于觀察的優(yōu)勢(shì)。樹(shù)首先對(duì)屬性淚流量進(jìn)行測(cè)試,產(chǎn)生的兩個(gè)分支與兩個(gè)可能的輸出結(jié)果相對(duì)應(yīng)。如果淚流量是reduced(左支),輸出是none;如果是normal(右支),第二個(gè)測(cè)試是散光屬性。最后,無(wú)論測(cè)試是什么結(jié)果,所達(dá)到的
36、樹(shù)的葉子指出了向病人推薦的隱形眼鏡的類型。</p><p> 以上就是一個(gè)決策樹(shù)的例子。</p><p> 一個(gè)決策樹(shù)上的節(jié)點(diǎn)包含了對(duì)某個(gè)特定屬性的測(cè)試。通常來(lái)說(shuō),在一個(gè)節(jié)點(diǎn)上的測(cè)試是比較一個(gè)屬性值與一個(gè)常量。然而,有一些樹(shù)節(jié)點(diǎn)上的測(cè)試其實(shí)就是在兩個(gè)屬性值與一個(gè)常量之間進(jìn)行比較。葉節(jié)點(diǎn)對(duì)所有到達(dá)葉實(shí)例給出一組分類,或者一個(gè)分類,或是包括了所有可能分類的一個(gè)概率分布。在對(duì)一個(gè)未知實(shí)例進(jìn)行
37、分類時(shí),在各個(gè)連續(xù)節(jié)點(diǎn)上對(duì)未知實(shí)例的屬性值進(jìn)行測(cè)試,然后根據(jù)測(cè)試的結(jié)果,從樹(shù)的自上而下地尋找出一條路徑,當(dāng)實(shí)例到達(dá)目標(biāo)葉子時(shí),葉子所標(biāo)注的類就是該實(shí)例的分類 [6]。</p><p> 在一個(gè)節(jié)點(diǎn)上測(cè)試,如果測(cè)試的屬性是名詞性屬性,那么在這個(gè)節(jié)點(diǎn)之下產(chǎn)生這個(gè)名詞性屬性所有可能屬性值數(shù)量的分支。在這種情形下,因?yàn)槿魏我粋€(gè)可能的名詞性屬性值都對(duì)應(yīng)一個(gè)分支,所以在以后的建樹(shù)過(guò)程中,相同的名詞性屬性將不會(huì)再次被測(cè)試。而
38、有些時(shí)候,名詞性屬性值被分成兩個(gè)子集,那么就產(chǎn)生兩個(gè)分支,屬性值所在的子集決定了實(shí)例的分配。在這種情況下,也許會(huì)在一條路徑上一個(gè)名詞性屬性將會(huì)被不止一次地測(cè)試。</p><p> 在一個(gè)節(jié)點(diǎn)上測(cè)試,如果測(cè)試的屬性是數(shù)值屬性,那么事先定義好一個(gè)常量,在一個(gè)節(jié)點(diǎn)上的測(cè)試中一般是判斷這個(gè)數(shù)值是否大于或者小于這個(gè)常量,并導(dǎo)出一個(gè)二叉分裂。或者也可能使用三叉分裂,甚至將會(huì)出現(xiàn)多個(gè)不同的可能性。若把殘缺值也作為一個(gè)獨(dú)立的屬
39、性值看待的話,那么將產(chǎn)生出第三個(gè)分支。對(duì)于為實(shí)數(shù)值屬的數(shù)值屬性來(lái)說(shuō),等于的操作是一個(gè)沒(méi)有實(shí)際意義的操作,所以在實(shí)數(shù)上的測(cè)試應(yīng)該是用一個(gè)區(qū)間而不是一個(gè)常量,同樣也可以運(yùn)用于落在區(qū)間以下、區(qū)間內(nèi)和區(qū)間以上的判斷來(lái)實(shí)行三叉分裂 [6]。</p><p> 2.2 創(chuàng)建決策樹(shù)的步驟</p><p> 根據(jù)數(shù)據(jù)創(chuàng)建決策樹(shù)的方法有許多種,以下從C4.5方法的角度創(chuàng)建一個(gè)決策樹(shù)。</p>
40、;<p> C4.5算法其實(shí)是ID3算法的改進(jìn),比較ID3算法它增加了對(duì)連續(xù)型屬性、屬性值空缺情況等情況的操作。算法的主體由剪枝算法C4.5pruning、決策樹(shù)生成C4.5tree、規(guī)則生成算法C4.5rules 等3部分組成。C4.5算法是根據(jù)信息熵的研究理論,通過(guò)選擇把當(dāng)前樣本集中具有最大信息增益率的屬性作為測(cè)試屬性,并且不斷地對(duì)樣本集進(jìn)行劃分,構(gòu)造出最終的一棵完全決策樹(shù)。對(duì)于連續(xù)型的屬性,通常先對(duì)連續(xù)屬性進(jìn)行離散
41、化處理,即把連續(xù)型屬性的值劃分成不同的區(qū)間,從而便于處理后面的步驟。C4.5rules則是把完全決策樹(shù)轉(zhuǎn)化成一組if.then規(guī)則集且進(jìn)行化簡(jiǎn)。經(jīng)剪枝或規(guī)則生成過(guò)程中得到的簡(jiǎn)化決策樹(shù)和規(guī)則集都可用于分類。而C4.5pruning是基于錯(cuò)誤的剪枝方法,采用剪枝方法對(duì)完全決策樹(shù)進(jìn)行修剪,得到簡(jiǎn)化決策樹(shù) [7]。</p><p> ID3算法在實(shí)際應(yīng)用中存在一些問(wèn)題,Quilan提出了C4.5算法,嚴(yán)格上講C4.5只
42、能是ID3的一個(gè)改進(jìn)的算法。</p><p> C4.5算法繼承了ID3算法的優(yōu)點(diǎn),并且在以下幾個(gè)方面對(duì)ID3算法進(jìn)行改進(jìn):</p><p> ?。?) 通過(guò)信息增益率來(lái)選擇屬性,解決了用信息增益選擇屬性時(shí)偏向選擇取值多的屬性的不足的問(wèn)題; </p><p> ?。?)剪枝操作在樹(shù)構(gòu)造的過(guò)程中一起進(jìn)行; </p><p> (3) 相
43、對(duì)ID3算法,C4.5算法能夠?qū)B續(xù)屬性進(jìn)行離散化處理操作;</p><p> ?。?) 對(duì)不完整數(shù)據(jù)也能進(jìn)行處理處理操作,即屬性空缺的情況。</p><p> C4.5算法的優(yōu)點(diǎn):相對(duì)ID3算法,易于理解C4.5算法產(chǎn)生的分類規(guī)則,準(zhǔn)確率較高。但是其缺點(diǎn)是:在構(gòu)造樹(shù)的過(guò)程中,對(duì)數(shù)據(jù)集需要進(jìn)行多次的順序掃描和排序,因而可能導(dǎo)致算法的低效。同時(shí),C4.5算法適合于能夠駐留于內(nèi)存的數(shù)據(jù)集,當(dāng)
44、訓(xùn)練集大到無(wú)法在內(nèi)存中保存時(shí)程序就無(wú)法運(yùn)行。</p><p> C4.5算法的步驟如下</p><p> (1)求訓(xùn)練集合的信息熵</p><p><b> INFO(D)=-</b></p><p> ?。?)對(duì)于每一屬性Ai,按照屬性Ai的取值對(duì)訓(xùn)練集進(jìn)行劃分后的信息熵。</p><p>
45、; INFO(D, Aj)=</p><p><b> ?。?)求信息增益</b></p><p> Gain(D, Ai)=INFO(D)-INFO(D, Ai)</p><p> ?。?)求屬性A的信息熵</p><p> INFO(Ai)= -</p><p> ?。?)求屬性的信息增
46、益比率</p><p> GainRatio(D,Aj)=</p><p> 采用C4.5離散化的方法建立決策樹(shù),圖示如2-2</p><p> 圖2-2 C4.5決策樹(shù)建立流程圖</p><p> 3 數(shù)據(jù)離散化的幾類算法</p><p> 3.1 離散化的基本算法和標(biāo)準(zhǔn)</p><
47、p> 3.1.1 離散化的基本算法</p><p> 數(shù)據(jù)離散化本質(zhì)上通過(guò)斷點(diǎn)集合將連續(xù)的屬性空間劃分為若干區(qū),并使同一區(qū)域的實(shí)例都取相同的屬性值矢量。</p><p> 連續(xù)值屬性離散化方法的基本思想,設(shè)一個(gè)具有連續(xù)值屬性的決策信息系統(tǒng)s=(U,AT∪D),這里的U是有限非空的樣本集合,稱為對(duì)象空間或論域,AT為樣本空間的非空屬性集合,D是決策屬性集合,對(duì)于每個(gè)連續(xù)值屬性a
48、,a∈AT,其值域就是樣本空間U在屬性a上的取值范圍,由實(shí)數(shù)域上的一段左閉右開(kāi)的區(qū)間[Va,Wa)來(lái)表示。在每個(gè)連續(xù)值屬性a的值域Vɑ中應(yīng)找到一個(gè)恰當(dāng)?shù)膭澐吱?,在劃分Pɑ下的系統(tǒng)與初始系統(tǒng)的過(guò)程中應(yīng)具有相同的決策能力,劃分屬性值域?yàn)閹讉€(gè)互不相交的子區(qū)間,同時(shí)對(duì)每個(gè)子區(qū)間賦值以符號(hào)的形式,就得到了一組屹上的離散化取值,這個(gè)過(guò)程其實(shí)就是在樣本空間U的連續(xù)值屬性離散化的結(jié)果。由于任何劃分只是通過(guò)一組值域屹內(nèi)的分割點(diǎn)序列(v.<v:…&l
49、t;v。)確定的,因此,為了滿足系統(tǒng)需要的劃分,離散化的過(guò)程就是要在每個(gè)連續(xù)值域屹的劃分點(diǎn)序列集合中選出一個(gè)恰當(dāng)?shù)膭澐贮c(diǎn)序列,從而得到最終離散化結(jié)果 [8]。</p><p> 3.1.2 離散化算法的標(biāo)準(zhǔn)</p><p> 一個(gè)好的離散化方法通常要滿足三個(gè)標(biāo)準(zhǔn):一是為了減少后續(xù)的機(jī)器學(xué)習(xí)算法的運(yùn)算量,盡量減少離散區(qū)間數(shù)(切點(diǎn)數(shù));二是盡量避免或減少源數(shù)據(jù)中的信息損失;三是對(duì)連續(xù)數(shù)據(jù)
50、的離散化的方法能夠簡(jiǎn)單有效運(yùn)算量小,易于實(shí)現(xiàn)。</p><p> 3.2 離散化算法的分類和比較</p><p> 根據(jù)有無(wú)監(jiān)督性,離散化算法可以分為無(wú)監(jiān)督算法和有監(jiān)督算法這兩類。</p><p> ?。?)無(wú)監(jiān)督算法是不考慮屬性和類別之間的關(guān)系。代表性的算法有等寬法和等頻法等兩種算法。</p><p> (2)有監(jiān)督算法與無(wú)監(jiān)督算法
51、相反,它是考慮到屬性和類別之間的關(guān)系,在離散化的過(guò)程中是將類別值作為參數(shù)。而且由于相同數(shù)據(jù)在不同的分類問(wèn)題中,最佳離散化方案顯然地不同,所以有監(jiān)督算法比無(wú)監(jiān)督算法實(shí)際應(yīng)用中更具有科學(xué)性。</p><p> 同時(shí)離散化算法也可以分為,局部方法和全局方法。</p><p> ?。?)局部方法在離散化一個(gè)屬性的過(guò)程中忽略了其他屬性的影響,數(shù)據(jù)中的重要關(guān)系也容易受到破壞,被認(rèn)為是一種次優(yōu)方法。但
52、局部離散化方法相對(duì)簡(jiǎn)單易行,并已得到了廣泛的應(yīng)用。</p><p> ?。?)而全局方法考慮到了屬性之間的相互作用,一般可以獲得比局部方法更好的離散化結(jié)果。但是它的計(jì)算代價(jià)很高,難于得到應(yīng)用,因此在將來(lái)可能對(duì)如何減少全局方法的計(jì)算代價(jià)更加深入的研究。</p><p> 前面已經(jīng)介紹C4.5算法,以下再介紹其他幾種離散化的算法。</p><p> 3.3 BMI
53、C離散化算法</p><p> BMIC算法的全名是boundary point's attribute values merging and inconsistency checking,該算法是一種有監(jiān)督算法,以基本離散區(qū)間中大多數(shù)例子所屬類別為導(dǎo)向,合并同類區(qū)間。通過(guò)用簡(jiǎn)單的規(guī)則對(duì)邊界點(diǎn)集合進(jìn)行合并得到備選最優(yōu)切點(diǎn)的集合,改變了當(dāng)前多數(shù)方法遍歷尋求備選最優(yōu)切點(diǎn)的過(guò)程,同時(shí)也節(jié)省了大量運(yùn)算。而且采用
54、了不一致度調(diào)整離散區(qū)間使算法更有全局性[9]。</p><p> BMIC算法的步驟:</p><p> ?。?)按要離散化的屬性值,將數(shù)據(jù)矩陣以升序排列;</p><p> ?。?)以邊界點(diǎn)的屬性值為切點(diǎn)進(jìn)行分割屬性值集合,把其中符合定義一的邊界點(diǎn)屬性值記為獨(dú)立的離散區(qū)間即臨界區(qū)間少形成離散方案STEP1;</p><p> (3)對(duì)臨
55、界區(qū)間進(jìn)行合并,從而得到離散方案STEP2;</p><p> ?。?)對(duì)少數(shù)點(diǎn)區(qū)間進(jìn)行合并,從而得到離散方案STEP3;</p><p> ?。?)驗(yàn)證不一致度,調(diào)整STEP3,多次重復(fù)操作,獲得最終離散切點(diǎn)集合。</p><p> 圖3-1 BMIC算法過(guò)程</p><p> 3.4 基于云模式連續(xù)型屬性離散化的算法</p&g
56、t;<p> 該算法是將云模型和粗糙集理論相結(jié)合后提出的一種新的連續(xù)型屬性且無(wú)指導(dǎo)離散化的方法。這種方法離散化后得到的概念的邊界是模糊的,并且能較好地保持原信息系統(tǒng)的不準(zhǔn)確性,更符合一般人的思維習(xí)慣。(1)在連續(xù)型屬性的定義域中找到合適的斷點(diǎn),從而形成不同的區(qū)間;(2)在得到的區(qū)間上產(chǎn)生期望Ex 、熵En并形成正態(tài)模糊數(shù)模型;(3)歸并不同的正態(tài)模糊數(shù)模型,形成隸屬云。其中</p><p> 期
57、望Ex:它反映相應(yīng)的模糊概念的信息中心值;</p><p> 熵En:它指隸屬云的期望曲線的帶寬;</p><p> 超熵He:它反映隸屬云的離散程度[10]。</p><p> 3.5 人工魚(yú)群算法</p><p> 人工魚(yú)群算法是一種隨機(jī)搜索優(yōu)化算法,它是基于模擬魚(yú)群行為的。從構(gòu)造單條魚(yú)的底層行為開(kāi)始做起,通過(guò)對(duì)魚(yú)群中的各個(gè)個(gè)體
58、的局部尋優(yōu),從而達(dá)到全局最優(yōu)值在群體中突現(xiàn)的目的。人工魚(yú)個(gè)體的自適應(yīng)活動(dòng)就是算法的進(jìn)行,個(gè)體每一次活動(dòng)就是算法的一次迭代。在算法中,人工魚(yú)的個(gè)體狀態(tài)可以用向量X=(x1,x2,…,xn)表示,其中,(i = 1,…,n)為待尋優(yōu)參數(shù)。設(shè)Y為目標(biāo)函數(shù)的值,人工魚(yú)所在當(dāng)前位置的食物濃度用Y= f(X) 表示。人工魚(yú)個(gè)體之間的距離di-j=||Xi-Xj||,用VisualScop e表示人工魚(yú)的魚(yú)的感知距離 (即最大視野范圍)。人工魚(yú)移動(dòng)的
59、步長(zhǎng)用MoveStep來(lái)表示。擁擠度因子用δ表示。人工魚(yú)包括覓食、聚群等兩個(gè)行為。</p><p> ?。?)研究人工魚(yú)的覓食行為。設(shè)X為人工魚(yú)當(dāng)前狀態(tài),在其感知范圍內(nèi)(即di-j<=VisualScope)隨機(jī)選擇一個(gè)新?tīng)顟B(tài)X,當(dāng)該狀態(tài)的食物濃度大于當(dāng)前狀態(tài)時(shí),向該方向前進(jìn)一步。反之,就重新隨機(jī)選擇一個(gè)狀態(tài)X,進(jìn)行是否滿足前進(jìn)條件判斷。反復(fù)幾次之后,結(jié)果若仍不滿足前進(jìn)的條件,就隨機(jī)移動(dòng)一步,即Xnext=
60、</p><p> 其中,Xnext為下一步的位置,當(dāng)前的隨機(jī)狀態(tài)為Xj,產(chǎn)生隨機(jī)數(shù)序列Random()。</p><p> ?。?)人工魚(yú)的聚群行為。聚群行為指魚(yú)在游動(dòng)過(guò)程中會(huì)自然地聚集成群,在其感知范圍內(nèi)(即di-j<=VzsualScope)探索其他的同伴數(shù)目Nf及中心位置Xi,其中Xi=j,就Yi/Nf>δ*Yi,說(shuō)明同伴中心地帶有很多的食物而且中心地帶不太擁擠,則朝
61、伙伴的中心移動(dòng),反之執(zhí)行覓食行為。</p><p><b> 該算法的步驟如下:</b></p><p> 步驟l設(shè)定魚(yú)群算法中的各個(gè)參數(shù)值,設(shè)置人工魚(yú)的初始狀態(tài),在屬性最小值和最大值的區(qū)間內(nèi)浮動(dòng),從而得到初始的分割區(qū)間;</p><p> 步驟2在人工魚(yú)群系統(tǒng)中輸人第i(i=1,2,…,n)個(gè)條件屬性Ci與決策屬性D,對(duì)人工魚(yú)當(dāng)前的狀態(tài)
62、進(jìn)行區(qū)間離散化操作,再用粗集理論計(jì)算當(dāng)前條件屬性Ci和對(duì)決策屬性D的支持度rCi,重復(fù)多次迭代找到rCi的最大穩(wěn)定值;</p><p> 步驟3若i<n,令i=i+1,轉(zhuǎn)步驟2,否則計(jì)算所有離散化結(jié)果的整體分類質(zhì)量rc,若rc的值連續(xù)多次保持最大值不變則轉(zhuǎn)步驟4,否則令i=1,轉(zhuǎn)步驟2繼續(xù)進(jìn)行新一輪尋優(yōu);</p><p> 步驟4記錄當(dāng)前各人工魚(yú)的狀態(tài),并根據(jù)當(dāng)前狀態(tài)來(lái)確定離散區(qū)
63、間,通過(guò)利用粗糙集提取最簡(jiǎn)規(guī)則 [11]。</p><p> 4 BMIC離散化實(shí)現(xiàn)</p><p><b> 4.1 開(kāi)發(fā)工具</b></p><p> Visual Studio.NET是由Microsoft開(kāi)發(fā),是該公司產(chǎn)品.NET平臺(tái)下最為強(qiáng)大的開(kāi)發(fā)工具,Visual Studio.NET提供了包括設(shè)計(jì)、編碼、編譯調(diào)試、數(shù)據(jù)庫(kù)
64、聯(lián)接操作等基本功能,還為客戶提供了基于開(kāi)放架構(gòu)的服務(wù)器組件開(kāi)發(fā)平臺(tái)、企業(yè)開(kāi)發(fā)工具和應(yīng)用程序重新發(fā)布工具以及性能評(píng)測(cè)報(bào)告等一系列的高級(jí)功能。無(wú)論是軟件服務(wù)商,還是企業(yè)應(yīng)用程序的部署與發(fā)布,Visual Studio.NET都可以提供近乎完美的解決方案。</p><p> 4.1.1 整體功能</p><p> 無(wú)論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行,還是在本地執(zhí)行但在 Internet 上分布
65、,或者是在遠(yuǎn)程執(zhí)行,能夠提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境。</p><p> 提供一個(gè)解決版本控制和軟件部署沖突,使沖突最小化的代碼執(zhí)行環(huán)境。</p><p> 提供一個(gè)檢測(cè)包括由未知的或不完全受信任的第三方創(chuàng)建的代碼,能夠提高代碼執(zhí)行安全性的代碼執(zhí)行環(huán)境。</p><p> 提供一個(gè)能夠解釋環(huán)境和消除腳本環(huán)境等性能問(wèn)題的代碼執(zhí)行環(huán)境?!?lt;/p>
66、<p> 使開(kāi)發(fā)人員在面對(duì)類型不相同的應(yīng)用程序(比如基于c#的應(yīng)用程序和基于java的應(yīng)用程序)時(shí),他的經(jīng)驗(yàn)?zāi)軌虮3忠恢隆?lt;/p><p> 按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確?;?Microsoft Visual Studio .net 的代碼可與任何其他代碼集成。</p><p> NET Framework現(xiàn)主要由以下幾部分組成: (1)五種正式的語(yǔ)言編譯器(C#,V
67、isual Basic,C++,J#和Jscript腳本語(yǔ)言等)。(2)框架類庫(kù)(Framework Class Library,FCL)由很多相關(guān)互聯(lián)的類庫(kù)組成,支持Web應(yīng)用程序、Web服務(wù)、Windows應(yīng)用程序和數(shù)據(jù)訪問(wèn)等的開(kāi)發(fā)。(3)公共語(yǔ)言運(yùn)行庫(kù)(Common Language Runtime,CLR)是.NET Framework的基礎(chǔ),提供內(nèi)存管理、遠(yuǎn)程處理和線程管理等核心服務(wù),并且強(qiáng)調(diào)實(shí)施嚴(yán)格的類型安全,提高代碼執(zhí)行的
68、安全性和可靠性。</p><p> 4.1.2 組件構(gòu)成</p><p> 公共語(yǔ)言運(yùn)行庫(kù)和.NET Framework類庫(kù)。公共語(yǔ)言運(yùn)行庫(kù)是Microsoft Visual Studio .Net Framework的基礎(chǔ)??梢詫⑦\(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,為系統(tǒng)提供內(nèi)存管理、線程管理和遠(yuǎn)程處理等3部分核心服務(wù),強(qiáng)制實(shí)施嚴(yán)格的類型安全,進(jìn)而能夠提高其他形式的代碼的安全性和
69、可靠性以及準(zhǔn)確性。通常用CLR為基礎(chǔ)運(yùn)行的代碼稱為托管代碼,非托管代碼是不以CLR為基礎(chǔ)運(yùn)行的代碼。</p><p> 非托管組件可以承載.NET Framework,將公共語(yǔ)言運(yùn)行庫(kù)CLR加載到這些組件的進(jìn)程中,同時(shí)啟動(dòng)執(zhí)行托管代碼,進(jìn)而創(chuàng)建一個(gè)軟件環(huán)境,這個(gè)環(huán)境能夠同時(shí)利用托管和非托管功能兩個(gè)功能。Microsoft Visual Studio .Net Framework不僅提供了多個(gè)運(yùn)行庫(kù)宿主,而且還能
70、夠支持第三方運(yùn)行庫(kù)的開(kāi)發(fā)。</p><p><b> 4.1.3 版本</b></p><p> Visual Studio .NET的版本有Visual Studio .NET2002、Visual Studio .NET2003、Microsoft Visual Studio 2005、Microsoft Visual Studio 2008、Visual
71、Studio 2010等幾個(gè)版本。</p><p> 4.2 BMIC設(shè)計(jì)</p><p> 4.2.1 運(yùn)行界面</p><p> 這里主要介紹了基于Visual Studio.NET的開(kāi)發(fā)環(huán)境下BMIC算法的實(shí)現(xiàn)方法。在運(yùn)行界面的代碼模塊中,首先引用System. Drawing 命名空間,它提供了對(duì) GDI+ 基本圖形功能的訪問(wèn);其次引用了Syste
72、m.ComponentModel命名空間,該命名空間提供用于實(shí)現(xiàn)組件和控件運(yùn)行時(shí)和設(shè)計(jì)時(shí)行為的類。此命名空間包括用于實(shí)現(xiàn)屬性和類型轉(zhuǎn)換器、綁定到數(shù)據(jù)源以及授權(quán)組件的基類和接口;然后引用System. Data 命名空間,該命名空間提供對(duì)表示 ADO.NET 結(jié)構(gòu)的類的訪問(wèn)。通過(guò) ADO.NET 可以生成一些組件,用于有效管理多個(gè)數(shù)據(jù)源的數(shù)據(jù);還有,引用System.Collections命名空間,這個(gè)命名空間包含接口和類,這些接口和類定
73、義各種對(duì)象(如列表、隊(duì)列、位數(shù)組、哈希表和字典)的集合;最后還引用了System.Windows.Forms 命名空間,該命名空間包含用于創(chuàng)建基于Windows的應(yīng)用程序的類,以充分利用 Microsoft Windows 操作系統(tǒng)中提供的豐富的用戶界面功能。通過(guò)以上的命名空間,實(shí)現(xiàn)了對(duì)界面的基本設(shè)計(jì)。</p><p> 運(yùn)行界面如下圖4-1:</p><p><b> 圖4
74、-1 運(yùn)行界面</b></p><p> 其中按鈕 browse是導(dǎo)入數(shù)據(jù),按鈕discrete是對(duì)導(dǎo)入的數(shù)據(jù)進(jìn)行離散化處理,按鈕build tree是建立決策樹(shù)操作。</p><p> 4.2.2 運(yùn)行結(jié)果</p><p> 未進(jìn)行離散化處理的數(shù)據(jù)如圖4-2:</p><p> 圖4-2 未進(jìn)行離散化處理的數(shù)據(jù)<
75、/p><p> 進(jìn)行離散化處理后的數(shù)據(jù)如圖4-3:</p><p> 圖4-3 離散化后的結(jié)果</p><p> 點(diǎn)擊按鈕build tree后,顯示的結(jié)果如圖4-4</p><p> 圖4-4 建立決策樹(shù)</p><p><b> 4.2.3 類</b></p><p
76、> 以下介紹本次畢業(yè)論文設(shè)計(jì)用到的幾個(gè)類。</p><p> 類名:Discrete</p><p> 屬性:arrayCuts,discrete,target,table</p><p> 在Discrete的代碼模塊中,首先引用了System.IO命名空間,該命名空間包含了允許讀寫文件和數(shù)據(jù)流的類型以及提供基本文件和目錄支持的類型;其次引用了Sys
77、tem.Collections命名空間,它提供了包含接口和類,這些接口和類定義各種對(duì)象(如列表、隊(duì)列、位數(shù)組、哈希表和字典)的集合;再者引用了System.Data命名空間,該命名空間為類提供了對(duì)表示 ADO.NET 結(jié)構(gòu)的類的訪問(wèn)。通過(guò) ADO.NET 可以生成一些組件,用于有效管理多個(gè)數(shù)據(jù)源的數(shù)據(jù);還有引用了System.ComponentModel命名空間,它主要的功能是提供提供用于實(shí)現(xiàn)組件和控件運(yùn)行時(shí)和設(shè)計(jì)時(shí)行為的類。此命名空間
78、包括用于實(shí)現(xiàn)屬性和類型轉(zhuǎn)換器、綁定到數(shù)據(jù)源以及授權(quán)組件的基類和接口;最后引用了System.Windows.Forms命名空間,該命名空間主要含用于創(chuàng)建基于Windows的應(yīng)用程序的類,以充分利用 Microsoft Windows 操作系統(tǒng)中提供的豐富的用戶界面功能。通過(guò)以上幾種命名空間,來(lái)完成對(duì)類Discrete算法的實(shí)現(xiàn)。</p><p><b> 主要代碼如下:</b></p
79、><p> using System;</p><p> using System.IO ;</p><p> using System.Collections;</p><p> using System.Data;</p><p> using System.ComponentModel ;</p>
80、;<p> using System.Windows.Forms;</p><p> namespace C4._5</p><p><b> {</b></p><p> /// <summary></p><p> /// Discrete 的摘要說(shuō)明。</p>&l
81、t;p> /// </summary></p><p> public class Discrete</p><p><b> { </b></p><p> private ArrayCuts arrayCuts=new ArrayCuts();</p><p> private do
82、uble[] discrete;</p><p> private string[]target;</p><p> public DataTable Table;</p><p> public Discrete(Attribute attribute, Attribute tAttribute,DataTable table)</p><
83、;p><b> {</b></p><p> MessageBox.Show("another attribute:");</p><p> Table=table;</p><p> for (int k=0;k<tAttribute.values .Length ;k++)</p>&l
84、t;p> System.Console .WriteLine (tAttribute.values[k]);</p><p> int elementNum=table.Rows.Count;</p><p> discrete=new double[elementNum];</p><p> target=new string[elementNum]
85、;</p><p> sort(attribute,tAttribute,Table);</p><p> FindCuts(attribute,tAttribute,Table);</p><p> arrayCuts=MinimizeCuts(arrayCuts);</p><p> //for (int k=0;k<arr
86、ayCuts.Count;k++)</p><p> //System.Console .WriteLine (arrayCuts.CutPoints [k].CutValue.ToString () +"Class:"+arrayCuts.CutPoints [k].CValue );</p><p> Table=replace(attribute,t
87、Attribute,arrayCuts,Table);</p><p><b> }</b></p><p> private void sort(Attribute attribute, Attribute tAttribute,DataTable table)//根據(jù)屬性對(duì)表進(jìn)行排序</p><p><b> {</
88、b></p><p><b> int k=0;</b></p><p> foreach(DataRow row in table.Rows)</p><p><b> {</b></p><p> discrete[k]=Math.Round(double.Parse((strin
89、g)row[attribute.AttributeName]),2);</p><p> target[k]=( string)row[tAttribute.AttributeName];</p><p><b> k++;</b></p><p><b> }</b></p><p> d
90、ouble tempD;</p><p> string tempT;</p><p> for (int i=0;i<discrete.Length-1 ;i++)</p><p> for (int j=i+1;j<discrete.Length;j++)</p><p> if (discrete[i]>dis
91、crete[j] )</p><p><b> {</b></p><p> tempD=discrete[i];</p><p> discrete[i]=discrete[j];</p><p> discrete[j]=tempD;</p><p> tempT=target[i]
92、;</p><p> target[i]=target[j];</p><p> target[j]=tempT;</p><p><b> }</b></p><p> /* 查看排序結(jié)果是否正確 </p><p> FileStream fs1 = new FileStream(@&
93、quot;c:\sorta.txt", FileMode.Create , FileAccess.Write);</p><p> StreamWriter m_streamWriter = new StreamWriter(fs1);</p><p> for (int i=0;i<discrete.Length ;i++)</p><p>&
94、lt;b> {</b></p><p> m_streamWriter.WriteLine (discrete[i].ToString ()+","+target[i]);</p><p><b> }</b></p><p> m_streamWriter.Close (); */</p&g
95、t;<p> //System.Console .WriteLine ( "elements of discrete:"+discrete.Length.ToString ());</p><p><b> }</b></p><p> public DataTable replace(Attribute attribute,
96、Attribute tAttribute,ArrayCuts arrayCuts,DataTable table)</p><p><b> {</b></p><p> foreach(DataRow row in table.Rows)</p><p><b> { </b></p><p&g
97、t; for (int i=0;i< arrayCuts.Count ;i++)</p><p><b> {</b></p><p> if (double.Parse((string)row[attribute.AttributeName])<arrayCuts.CutPoints [i].CutValue )</p><p&
98、gt; {row[attribute.AttributeName]=arrayCuts.CutPoints [i].CutValue.ToString ();</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></
99、p><p> //System.Console.WriteLine (arrayCuts.Count -1);</p><p> //System.Console.WriteLine (row[attribute.AttributeName ]+"last:"+arrayCuts.CutPoints [arrayCuts.Count -1].ToString ());&
100、lt;/p><p> if (double.Parse((string)row[attribute.AttributeName ])>arrayCuts.CutPoints [arrayCuts.Count -1].CutValue)</p><p> row[attribute.AttributeName]="biggest";</p><p
101、><b> }</b></p><p> return table;</p><p><b> }</b></p><p> private ArrayCuts MinimizeCuts(ArrayCuts arrayCuts) //切點(diǎn)合并</p><p><b> {
102、</b></p><p> ArrayCuts tempCuts=new ArrayCuts();</p><p> Cut tempCut;</p><p> //System.Console .WriteLine (arrayCuts.Count.ToString ());</p><p> for( int i=1;
103、i<arrayCuts.Count ;i++)</p><p><b> {</b></p><p> if ( arrayCuts.CutPoints[i].CValue!=arrayCuts.CutPoints[i-1].CValue )</p><p><b> {</b></p><
104、;p> tempCut=new Cut(arrayCuts.CutPoints[i-1].CutValue ,arrayCuts.CutPoints[i].Count+arrayCuts.CutPoints[i-1].Count,arrayCuts.CutPoints[i-1].CValue );</p><p> tempCuts.AddCut (tempCut);</p><p
105、><b> }</b></p><p><b> }</b></p><p> for (int i=1;i<tempCuts.Count;i++)</p><p><b> {</b></p><p> if (tempCuts.CutPoints
106、 [i].Count <=3)</p><p><b> {</b></p><p> tempCuts.CutPoints[i-1].Count +=tempCuts.CutPoints[i].Count;</p><p> tempCuts.RemoveCut(i); //樣本數(shù)少的切點(diǎn)進(jìn)行合并</p><
107、p><b> }</b></p><p><b> }</b></p><p> arrayCuts=tempCuts;</p><p> return arrayCuts;</p><p> //System.Console .WriteLine (arrayCuts.Count.
108、ToString ());</p><p><b> /*</b></p><p> for( int i=0;i<arrayCuts.Count ;i++)</p><p><b> {</b></p><p> System.Console .WriteLine (arrayCut
109、s.CutPoints [i].CutValue .ToString ()+"Class:"+arrayCuts.CutPoints [i].CValue +"count: "+arrayCuts.CutPoints[i].Count.ToString ());</p><p><b> }</b></p><p><
110、;b> */</b></p><p><b> }</b></p><p> private void FindCuts(Attribute attribute,Attribute tAttribute,DataTable table)</p><p><b> {</b></p>
111、<p> int total=0;</p><p> int[] cnum=new int[tAttribute.values.Length ];</p><p> for(int i=1;i<discrete.Length ;i++)</p><p><b> {</b></p><p>
112、//System.Console.WriteLine (row[attribute.AttributeName]+"C:"+row[tAttribute.AttributeName]);</p><p> if ( discrete[i-1]==discrete[i])</p><p><b> { </b></p><p
113、> if (total>=1 && i>1 )</p><p><b> {</b></p><p> Cut theCut=new Cut(discrete[i-2],total,target[i-2]);</p><p> arrayCuts.AddCut (theCut);</p>
114、<p> //System.Console .WriteLine ("the cut before intervalCUt:"+ discrete[i-2].ToString ()+ "total:" +total.ToString ());</p><p><b> }</b></p><p> int ito
115、tal=1; //itotal存此屬性相同樣本數(shù)</p><p> for (int k=0;k<tAttribute.values.Length;k++)</p><p><b> {</b></p><p> if (target[i-1]==tAttribute.values[k])</p><p>
116、 cnum[k]++;</p><p><b> }</b></p><p> while ( discrete[i-1]==discrete[i])</p><p><b> {</b></p><p> for (int k=0;k<tAttribute.values.Length
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融營(yíng)銷研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 數(shù)據(jù)加密方法的研究與實(shí)現(xiàn)【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 助學(xué)貸款證券化研究【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 客戶流失問(wèn)題研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 長(zhǎng)期資產(chǎn)減值研究【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 連續(xù)數(shù)據(jù)的離散化研究[文獻(xiàn)綜述]
- 論產(chǎn)品責(zé)任【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 高校籌資問(wèn)題研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 股市羊群行為研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 連續(xù)數(shù)據(jù)的離散化研究[畢業(yè)論文]
- 連續(xù)數(shù)據(jù)的離散化研究畢業(yè)論文
- 審計(jì)期望差距研究【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 女性政治參與的研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 品牌老化問(wèn)題的研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 論情勢(shì)變更原則【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 企業(yè)薪酬管理問(wèn)題研究綜述【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
- 區(qū)域品牌建設(shè)策略研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 企業(yè)品牌延伸策略研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 渠道有效性研究[任務(wù)書+文獻(xiàn)綜述+開(kāi)題報(bào)告+畢業(yè)論文]
- 數(shù)據(jù)庫(kù)原理課程網(wǎng)站設(shè)計(jì)【畢業(yè)論文+文獻(xiàn)綜述+開(kāi)題報(bào)告+任務(wù)書】
評(píng)論
0/150
提交評(píng)論