數(shù)據(jù)挖掘工具(weka教程)_第1頁
數(shù)據(jù)挖掘工具(weka教程)_第2頁
數(shù)據(jù)挖掘工具(weka教程)_第3頁
數(shù)據(jù)挖掘工具(weka教程)_第4頁
數(shù)據(jù)挖掘工具(weka教程)_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、廣西科技大學(xué)理學(xué)院 韋振中pWEKA簡(jiǎn)介p數(shù)據(jù)格式p數(shù)據(jù)準(zhǔn)備p屬性選擇p可視化分析p分類預(yù)測(cè)p關(guān)聯(lián)分析p聚類分析p擴(kuò)展WEKA課程的總體目標(biāo)和要求:課程的總體目標(biāo)和要求:v熟悉WEKA的基本操作,了解WEKA的各項(xiàng)功能v掌握數(shù)據(jù)挖掘?qū)嶒?yàn)的流程準(zhǔn)備數(shù)據(jù)選擇算法和參數(shù)運(yùn)行評(píng)估實(shí)驗(yàn)結(jié)果v了解或掌握在WEKA中加入新算法的方法pWEKA的全名是懷卡托智能分析環(huán)境(Waikato Environment for Knowledge Analysis),其源代碼可從http:/www.cs.waikato.ac.nz/ml/weka/得到。同時(shí)weka也是新西蘭的一種鳥名,而WEKA的主要開發(fā)者來自新西蘭

2、。p2005年8月,在第11屆ACM SIGKDD國(guó)際會(huì)議上,懷卡托大學(xué)的WEKA小組榮獲了數(shù)據(jù)挖掘和知識(shí)探索領(lǐng)域的最高服務(wù)獎(jiǎng), WEKA系統(tǒng)得到了廣泛的認(rèn)可,被譽(yù)為數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)歷史上的里程碑,是現(xiàn)今最完備最完備的數(shù)據(jù)挖掘工具之一。 WEKA的每月下載次數(shù)已超過萬次。p作為一個(gè)大眾化的數(shù)據(jù)挖掘工作平臺(tái), WEKA集成了大量能承擔(dān)數(shù)據(jù)挖掘任務(wù)的機(jī)器學(xué)習(xí)算法,包括對(duì)數(shù)據(jù)進(jìn)行預(yù)處理、分類、回歸、聚類、關(guān)聯(lián)分析以及在新的交互式界面上的可視化等等。通過其接口,可在其基礎(chǔ)上實(shí)現(xiàn)自己的數(shù)據(jù)挖掘算法。WEKA所用的數(shù)據(jù)格式( 跟Excel一樣)ExplorerExplorer界面界面 Open file

3、 EditWEKA文件相關(guān)術(shù)語p表格里的一個(gè)橫行稱作一個(gè)實(shí)例(Instance),相當(dāng)于統(tǒng)計(jì)學(xué)中的一個(gè)樣本,或者數(shù)據(jù)庫(kù)中的一條記錄。豎行稱作一個(gè)屬性(Attribute),相當(dāng)于統(tǒng)計(jì)學(xué)中的一個(gè)變量,或者數(shù)據(jù)庫(kù)中的一個(gè)字段。這樣一個(gè)表格,或者叫數(shù)據(jù)集,在WEKA看來,呈現(xiàn)了屬性之間的一種關(guān)系(Relation)。上圖中一共有14個(gè)實(shí)例,5個(gè)屬性,關(guān)系名稱為“weather”。pWEKA存儲(chǔ)數(shù)據(jù)的格式是ARFF(Attribute-Relation File Format)文件,這是一種ASCII文本文件。上圖所示的二維表格存儲(chǔ)在如下的ARFF文件中。這也就是WEKA自帶的“weather.arf

4、f”文件,在WEKA安裝目錄的“data”子目錄下可以找到。n文件內(nèi)容說明 識(shí)別ARFF文件的重要依據(jù)是分行,因此不能在這種文件里隨意的斷行??招校ɑ蛉强崭竦男校⒈缓雎?。 以“%”開始的行是注釋,WEKA將忽略這些行。如果你看到的“weather.arff”文件多了或少了些“%”開始的行,是沒有影響的。 除去注釋后,整個(gè)ARFF文件可以分為兩個(gè)部分。p第一部分給出了頭信息(Head information),包括了對(duì)關(guān)系的聲明和對(duì)屬性的聲明。p第二部分給出了數(shù)據(jù)信息(Data information),即數(shù)據(jù)集中給出的數(shù)據(jù)。從“data”標(biāo)記開始,后面的就是數(shù)據(jù)信息了。p關(guān)系聲明 關(guān)系名稱

5、在ARFF文件的第一個(gè)有效行來定義,格式為 relation 是一個(gè)字符串。如果這個(gè)字符串包含空格,它必須加上引號(hào)(指英文標(biāo)點(diǎn)的單引號(hào)或雙引號(hào))。p屬性聲明 屬性聲明用一列以“attribute”開頭的語句表示。數(shù)據(jù)集中的每一個(gè)屬性都有它對(duì)應(yīng)的“attribute”語句,來定義它的屬性名稱和數(shù)據(jù)類型。 這些聲明語句的順序很重要。首先它表明了該項(xiàng)屬性在數(shù)據(jù)部分的位置。例如,“humidity”是第三個(gè)被聲明的屬性,這說明數(shù)據(jù)部分那些被逗號(hào)分開的列中,第三列數(shù)據(jù) 85 90 86 96 . 是相應(yīng)的“humidity”值。其次,最后一個(gè)聲明的屬性被稱作class屬性,在分類或回歸任務(wù)中,它是默認(rèn)的

6、目標(biāo)變量。 屬性聲明的格式為 attribute 其中是以字母開頭的字符串。和關(guān)系名稱一樣,如果這個(gè)字符串包含空格,它必須加上引號(hào)。pWEKA支持的有四種numeric數(shù)值型 標(biāo)稱(nominal)型string字符串型date 日期和時(shí)間型 其中 和 將在下面說明。還可以使用兩個(gè)類型“integer”和“real”,但WEKA把它們都當(dāng)作“numeric”看待。 注意“integer”,“real”,“numeric”,“date”,“string”這些關(guān)鍵字是區(qū)分大小寫的,而“relation”、“attribute ”和“data”則不區(qū)分。p數(shù)值屬性 數(shù)值型屬性可以是整數(shù)或者實(shí)數(shù),但W

7、EKA把它們都當(dāng)作實(shí)數(shù)看待。p標(biāo)稱屬性 標(biāo)稱屬性由列出一系列可能的類別名稱并放在花括號(hào)中: , , . 數(shù)據(jù)集中該屬性的值只能是其中一種類別。 例如 如下的屬性聲明說明“outlook”屬性有三種類別:“sunny”,“ overcast”和“rainy”。而數(shù)據(jù)集中每個(gè)實(shí)例對(duì)應(yīng)的“outlook”值必是這三者之一。 attribute outlook sunny, overcast, rainy 如果類別名稱帶有空格,仍需要將之放入引號(hào)中。p字符串屬性 字符串屬性中可以包含任意的文本。這種類型的屬性在文本挖掘中非常有用。 示例: ATTRIBUTE LCC string 日期和時(shí)間屬性 日期

8、和時(shí)間屬性統(tǒng)一用“date”類型表示,它的格式是 attribute date 其中是這個(gè)屬性的名稱,是一個(gè)字符串,來規(guī)定該怎樣解析和顯示日期或時(shí)間的格式,默認(rèn)的字符串是ISO-8601所給的日期時(shí)間組合格式 “yyyy-MM-dd HH:mm:ss”。 數(shù)據(jù)信息部分表達(dá)日期的字符串必須符合聲明中規(guī)定的格式要求(下文有例子)。p數(shù)據(jù)信息 數(shù)據(jù)信息中“data”標(biāo)記獨(dú)占一行,剩下的是各個(gè)實(shí)例的數(shù)據(jù)。每個(gè)實(shí)例占一行。實(shí)例的各屬性值用逗號(hào)“,”隔開。如果某個(gè)屬性的值是缺失值(missing value),用問號(hào)“?”表示,且這個(gè)問號(hào)不能省略。例如: data sunny,85,85,FALSE,no

9、 ?,78,90,?,yesp字符串屬性和標(biāo)稱屬性的值是區(qū)分大小寫的。若值中含有空格,必須被引號(hào)括起來。例如: relation LCCvsLCSH attribute LCC string attribute LCSH string data AG5, Encyclopedias and dictionaries.;Twentieth century. AS262, Science - Soviet Union - History.p日期屬性的值必須與屬性聲明中給定的相一致。例如: RELATION Timestamps ATTRIBUTE timestamp DATE yyyy-MM-dd

10、 HH:mm:ss DATA 2001-04-03 12:12:12 2001-05-03 12:59:55數(shù)據(jù)文件格式轉(zhuǎn)換 使用WEKA作數(shù)據(jù)挖掘,面臨的第一個(gè)問題往往是我們的數(shù)據(jù)不是ARFF格式的。幸好,WEKA還提供了對(duì)CSV文件的支持,而這種格式是被很多其他軟件,比如Excel所支持的。 利用WEKA可以將CSV文件格式轉(zhuǎn)化成ARFF文件格式。ARFF格式是WEKA支持得最好的文件格式。此外,WEKA還提供了通過JDBC訪問數(shù)據(jù)庫(kù)的功能。 “Explorer”界面界面 “Explorer”提供了很多功能,是WEKA使用最多的模塊?,F(xiàn)在我們先來熟悉它的界面,然后利用它對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。1

11、2345678根據(jù)不同的功能把這個(gè)界面分成8個(gè)區(qū)域。p區(qū)域1的幾個(gè)選項(xiàng)卡是用來切換不同的挖掘任務(wù)面板。這一節(jié)用到的只有“Preprocess”,其他面板的功能將在以后介紹。p區(qū)域2是一些常用按鈕。包括打開數(shù)據(jù),保存及編輯功能。p在區(qū)域3中“Choose”某個(gè)“Filter”,可以實(shí)現(xiàn)篩選數(shù)據(jù)或者對(duì)數(shù)據(jù)進(jìn)行某種變換。數(shù)據(jù)預(yù)處理主要就利用它來實(shí)現(xiàn)。p區(qū)域4展示了數(shù)據(jù)集的一些基本情況。p區(qū)域5中列出了數(shù)據(jù)集的所有屬性。勾選一些屬性并“Remove”就可以刪除它們,刪除后還可以利用區(qū)域2的“Undo”按鈕找回。區(qū)域5上方的一排按鈕是用來實(shí)現(xiàn)快速勾選的。在區(qū)域5中選中某個(gè)屬性,則區(qū)域6中有關(guān)于這個(gè)屬性的

12、摘要。注意對(duì)于數(shù)值屬性和標(biāo)稱屬性,摘要的方式是不一樣的。圖中顯示的是對(duì)數(shù)值屬性“income”的摘要。p區(qū)域7是區(qū)域5中選中屬性的直方圖。若數(shù)據(jù)集的最后一個(gè)屬性(這是分類或回歸任務(wù)的默認(rèn)目標(biāo)變量)是類標(biāo)變量(這里的“pep”正好是),直方圖中的每個(gè)長(zhǎng)方形就會(huì)按照該變量的比例分成不同顏色的段。要想換個(gè)分段的依據(jù),在區(qū)域7上方的下拉框中選個(gè)不同的分類屬性就可以了。下拉框里選上“No Class”或者一個(gè)數(shù)值屬性會(huì)變成黑白的直方圖。p區(qū)域8是狀態(tài)欄,可以查看Log以判斷是否有錯(cuò)。右邊的weka鳥在動(dòng)的話說明WEKA正在執(zhí)行挖掘任務(wù)。右鍵點(diǎn)擊狀態(tài)欄還可以執(zhí)行JAVA內(nèi)存的垃圾回收。p去除無用屬性 通常

13、對(duì)于數(shù)據(jù)挖掘任務(wù)來說,ID這樣的信息是無用的,我們將之刪除。在區(qū)域5勾選屬性“id”,并點(diǎn)擊“Remove”。將新的數(shù)據(jù)集保存為“bank-data.arff”,重新打開。p離散化有些算法只能處理所有的屬性都是標(biāo)稱型的情況。這時(shí)候我們就需要對(duì)數(shù)值型的屬性進(jìn)行離散化。在這個(gè)數(shù)據(jù)集中有3個(gè)變量是數(shù)值型的,分別是“age”,“income”和“children”。其中“children”只有4個(gè)取值:0,1,2,3。這時(shí)我們直接修改ARFF文件,把 attribute children numeric 改為attribute children 0,1,2,3就可以了。 在“Explorer”中重新打

14、開“bank-data.arff”,看看選中“children”屬性后,區(qū)域6那里顯示的“Type” 變成“Nominal”了。“age”和“income”的離散化可借助WEKA中名為“Discretize”的Filter來完成。在區(qū)域2中點(diǎn)“Choose”,出現(xiàn)一棵“Filter樹”,逐級(jí)找到“weka.filters.unsupervised.attribute.Discretize”,點(diǎn)擊。現(xiàn)在“Choose”旁邊的文本框應(yīng)該顯示“Discretize -B 10 -M -0.1 -R first-last”。 點(diǎn)擊這個(gè)文本框會(huì)彈出新窗口以修改離散化的參數(shù)。 我們不打算對(duì)所有的屬性離散化

15、,只是針對(duì)對(duì)第1個(gè)和第4個(gè)屬性(見區(qū)域5屬性名左邊的數(shù)字),故把a(bǔ)ttributeIndices右邊改成“1,4”。計(jì)劃把這兩個(gè)屬性都分成3段,于是把“bins”改成“3”。其它框里不用更改。點(diǎn)“OK”回到“Explorer”,可以看到“age”和“income”已經(jīng)被離散化成分類型的屬性。若想放棄離散化可以點(diǎn)區(qū)域2的“Undo”。經(jīng)過上述操作得到的數(shù)據(jù)集我們保存為bank-data-final.arff。p屬性類型轉(zhuǎn)換NominalToBinary過濾器將所有nominal類型的屬性轉(zhuǎn)為binary(0,1二值)屬性,一個(gè)可取k個(gè)值的nominal類型的屬性轉(zhuǎn)為k個(gè)二值屬性,這樣可將數(shù)據(jù)中所

16、有屬性轉(zhuǎn)為數(shù)值(numeric)屬性。以下是weather.arff轉(zhuǎn)換后的結(jié)果。p增加一個(gè)表達(dá)式屬性u(píng)AddExpression: An instance filter that creates a new attribute by applying a mathematical expression to existing attributes. The expression can contain attribute references and numeric constants. Supported operators are : +, -, *, /, , log, abs, co

17、s, exp, sqrt, floor, ceil, rint, tan, sin, (, )uAttributes are specified by prefixing with a, eg. a7 is attribute number 7 (starting from 1).Example expression : a12*a5/log(a7*4.0).以下命令在weather.arff中增加了一個(gè)temp/hum屬性,其值為第二個(gè)屬性(temperature)除以第三個(gè)屬性(humidity)的值。AddExpression E a2/a3 N temp/hump采樣u使用weka.f

18、ilters.supervised.instance.Resample對(duì)整個(gè)數(shù)據(jù)集進(jìn)行分層的采樣(stratified subsample,采樣所得數(shù)據(jù)仍保持原來的類分布)。以下Filter命令從soybean.arff中采樣了5%的數(shù)據(jù)。 Resample B 1.0 S 1 Z 5.0u使用weka.filters.unsupervised.instance.Resample 進(jìn)行不分層的采樣,即與類信息無關(guān)。以下Filter命令從soybean.arff中采樣了5%的數(shù)據(jù)。 Resample S 1 Z 5.0兩種屬性子集選擇模式屬性子集評(píng)估器 搜索方法單一屬性評(píng)估器 排序方法屬性子集評(píng)

19、估器 CfsSubsetEval: 綜合考慮單一屬性的預(yù)測(cè)值和屬性間的重復(fù)度 ClassifierSubsetEval: 用分類器評(píng)估屬性集 ConsistencySubsetEval: 將訓(xùn)練數(shù)據(jù)集映射到屬性集上來檢測(cè)類值的一致性 WrapperSubsetEval: 使用分類器和交叉驗(yàn)證v搜索方法BestFirst: 回溯的貪婪搜索ExhaustiveSearch: 窮舉搜索GeneticSearch: 使用遺傳算法搜索GreedyStepwise: 不回溯的貪婪搜索RaceSearch: 競(jìng)爭(zhēng)搜索RandomSearch: 隨機(jī)搜索RankSearch: 排列屬性并使用屬性子集評(píng)估器將有

20、潛力的屬性進(jìn)行排序單一屬性評(píng)估器 ChiSquaredAttributeEval: 以基于類的2為依據(jù)的屬性評(píng)估 GainRationAttributeEval: 以增益率為依據(jù)的屬性評(píng)估 InfoGainAttributeEval: 以信息增益為依據(jù)的屬性評(píng)估 OneRAttributeEval: 以O(shè)neR的方法論來評(píng)估屬性 PrincipleComponents: 進(jìn)行主成分的分析和轉(zhuǎn)換 ReliefAttributeEval: 基于實(shí)例的屬性評(píng)估器 SymmetricalUncertAttributeEval: 以對(duì)稱不確定性為依據(jù)的屬性評(píng)估排序方法 Ranker: 按照屬性的評(píng)估對(duì)它

21、們進(jìn)行排序二維散列圖 選擇類標(biāo) 標(biāo)稱類標(biāo):數(shù)據(jù)點(diǎn)的顏色是離散的 數(shù)值類標(biāo):數(shù)據(jù)點(diǎn)的顏色用色譜(藍(lán)色到橙色)表示 改變點(diǎn)陣的大小和點(diǎn)的大小 改變抖動(dòng)度,使互相重疊的點(diǎn)分開 選擇屬性子集和采樣 注意:必須點(diǎn)擊Update按鈕上述改動(dòng)才能生效lWEKA把分類(Classification)和回歸(Regression)都放在“Classify”選項(xiàng)卡中。 在這兩個(gè)任務(wù)中,都有一個(gè)目標(biāo)屬性(類別屬性,輸出變量)。我們希望根據(jù)一個(gè)樣本(WEKA中稱作實(shí)例)的一組特征(輸入變量),對(duì)目標(biāo)進(jìn)行預(yù)測(cè)。為了實(shí)現(xiàn) 這一目的,我們需要有一個(gè)訓(xùn)練數(shù)據(jù)集,這個(gè)數(shù)據(jù)集中每個(gè)實(shí)例的輸入和輸出都是已知的。觀察訓(xùn)練集中的實(shí)例,

22、可以建立起預(yù)測(cè)的模型。有了這個(gè)模型,我們就可以對(duì)新的未知實(shí)例進(jìn)行預(yù)測(cè)了。衡量模型的好壞主要在于預(yù)測(cè)的準(zhǔn)確程度。WEKA中的典型分類算法 Bayes: 貝葉斯分類器 BayesNet: 貝葉斯信念網(wǎng)絡(luò) NaveBayes: 樸素貝葉斯網(wǎng)絡(luò) Functions: 人工神經(jīng)網(wǎng)絡(luò)和支持向量機(jī) MultilayerPerceptron: 多層前饋人工神經(jīng)網(wǎng)絡(luò) SMO: 支持向量機(jī)(采用順序最優(yōu)化學(xué)習(xí)方法) Lazy: 基于實(shí)例的分類器 IB1: 1-最近鄰分類器 IBk: k-最近鄰分類器 Meta: 組合方法 AdaBoostM1: AdaBoost M1方法 Bagging: 袋裝方法 Rules:

23、 基于規(guī)則的分類器 JRip: 直接方法Ripper算法 Part: 間接方法從J48產(chǎn)生的決策樹抽取規(guī)則 Trees: 決策樹分類器 Id3: ID3決策樹學(xué)習(xí)算法(不支持連續(xù)屬性) J48: C4.5決策樹學(xué)習(xí)算法(第8版本) REPTree: 使用降低錯(cuò)誤剪枝的決策樹學(xué)習(xí)算法: 基于決策樹的組合方法四種方法 完全使用訓(xùn)練集 使用外部的檢驗(yàn)集 交叉驗(yàn)證 設(shè)置折數(shù) 保持方法 設(shè)置訓(xùn)練實(shí)例的百分比其他設(shè)置 設(shè)置代價(jià)矩陣窗口顯示的文字結(jié)果信息:運(yùn)行信息使用全部訓(xùn)練數(shù)據(jù)構(gòu)造的分類模型針對(duì)訓(xùn)練/檢驗(yàn)集的預(yù)測(cè)效果匯總 k-折交叉驗(yàn)證的結(jié)果是k次實(shí)驗(yàn)的匯總即 TP=TP1+TPk, FN=FN1+FNk

24、, FP=FP1+FPk, TN=TN1+TNk基于類的詳細(xì)結(jié)果 加權(quán)平均的系數(shù)是類大小的百分比混淆矩陣可視化分類錯(cuò)誤 實(shí)際類與預(yù)測(cè)類的散布圖可視化模型 可視化圖:貝葉斯網(wǎng)絡(luò) 查看條件概率表 可視化樹:決策樹 居中顯示 屏幕大小顯示 自動(dòng)調(diào)整顯示 查看結(jié)點(diǎn)關(guān)聯(lián)的訓(xùn)練集可視化邊緣曲線 (margin curve) 顯示預(yù)測(cè)邊緣,即實(shí)際類的預(yù)測(cè)概率與其他類的最大預(yù)測(cè)概率的差別 對(duì)于每個(gè)檢驗(yàn)實(shí)例,從小到大顯示預(yù)測(cè)邊緣 四個(gè)變量 Margin: 預(yù)測(cè)邊緣的值 Instance_number: 檢驗(yàn)實(shí)例的序號(hào) Current: 具有當(dāng)前預(yù)測(cè)邊緣值的實(shí)例個(gè)數(shù) Cumulative: 小于或等于預(yù)測(cè)邊緣值的

25、實(shí)例個(gè)數(shù) (與Instance_number一致)可視化閾值曲線(基于類) 閾值是將檢驗(yàn)實(shí)例歸為當(dāng)前類的最小概率,使用點(diǎn)的顏色表示閾值 曲線上的每個(gè)點(diǎn)通過改變閾值的大小生成 可以進(jìn)行ROC分析 X軸選假正率 Y軸選真正率 問題:為什么決策樹也可以進(jìn)行ROC分析? 可能答案:葉子不一定是純的,存在類的概率分布優(yōu)點(diǎn) 同時(shí)對(duì)多個(gè)數(shù)據(jù)集和多個(gè)分類算法工作 可以比較多個(gè)分類算法的性能缺點(diǎn) 不能使用數(shù)據(jù)預(yù)處理工具 不能選擇類標(biāo),只能將輸入數(shù)據(jù)集的最后一個(gè)屬性作為類標(biāo)三個(gè)頁面 設(shè)置頁面 (Setup) 設(shè)置實(shí)驗(yàn)參數(shù) 運(yùn)行頁面 (Run) 啟動(dòng)實(shí)驗(yàn),監(jiān)視實(shí)驗(yàn)過程 分析頁面 (Analyze) 分析實(shí)驗(yàn)結(jié)果設(shè)置

26、實(shí)驗(yàn)配置模式 (Experiment Configuration Mode)設(shè)置保存結(jié)果路徑 (Choose Destination)設(shè)置實(shí)驗(yàn)類型 (Experiment Type) 交叉驗(yàn)證 保持方法(隨機(jī)化記錄次序) 保持方法(未知原有記錄次序)迭代控制 (Iteration Control) 設(shè)置實(shí)驗(yàn)迭代次數(shù),特別適用于保持方法數(shù)據(jù)集 (Datasets) 增加數(shù)據(jù)集,類標(biāo)是數(shù)據(jù)集最后一個(gè)屬性分類算法 (Algorithms) 增加算法 設(shè)置算法參數(shù)點(diǎn)擊運(yùn)行,報(bào)告運(yùn)行情況運(yùn)行后生成一個(gè)數(shù)據(jù)集 一個(gè)記錄對(duì)應(yīng)一個(gè)數(shù)據(jù)集和一個(gè)分類算法的一次實(shí)驗(yàn),字段包括算法、數(shù)據(jù)集和不同的性能度量 分析僅限于

27、數(shù)值分析和顯著性測(cè)試 沒有可視化分析功能實(shí)驗(yàn)結(jié)果數(shù)據(jù)源 (Source)配置測(cè)試 (Configure test) 選擇行和列,行缺省是數(shù)據(jù)集,列缺省是Scheme, Scheme_options和Scheme_version_ID 基準(zhǔn)分類模型 (Test base) 某個(gè)輸入模型 匯總 (summary) 排序 (ranking)結(jié)果列表 (Result list)測(cè)試輸出 (Test output)分組對(duì)UCI數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)/ml/datasets.html 12個(gè)組 每組選擇一個(gè)數(shù)據(jù)集分析實(shí)驗(yàn)內(nèi)容 使用一個(gè)UCI數(shù)據(jù)集,選擇任意三個(gè)分類

28、算法 分析三個(gè)分類算法的實(shí)驗(yàn)結(jié)果 解釋文字分析結(jié)果 解釋圖形分析結(jié)果 使用兩個(gè)性能度量比較三個(gè)分類算法的性能差異 解釋基于某個(gè)分類算法的性能比較結(jié)果 解釋基于排序的性能比較結(jié)果功能:將WEKA組件在設(shè)計(jì)畫布上相互連接以形成可進(jìn)行動(dòng)態(tài)數(shù)據(jù)處理分析的知識(shí)流兩種數(shù)據(jù)處理模式1.批量處理2.增量處理探索者界面不支持增量處理數(shù)據(jù)目前WEKA實(shí)現(xiàn)了下面這些可增量學(xué)習(xí)的分類器:AODE、IB1、IBk、KStar、NaiveBayesMultinomialUpdateable、NaiveBayesUpdateable、NNge、Winnow、RacedIncrementalLogitBoost、LWL交叉驗(yàn)

29、證J48顯示 Datasources ArffLoader Evaluation ClassAssigner Evaluation CrossValidationFoldMaker Classifiers J48 Evaluation ClassifierPerformanceEvaluator Visualization TextViewer Visualization GraphViewer交叉驗(yàn)證J48顯示交叉驗(yàn)證BayesNet顯示 Datasources ArffLoader Evaluation ClassAssigner Evaluation CrossValidationFol

30、dMaker Classifiers BayesNet Evaluation ClassifierPerformanceEvaluator Visualization TextViewer Visualization GraphViewer交叉驗(yàn)證BayesNet顯示增量學(xué)習(xí)NaiveBayesUpdateable顯示 Datasources ArffLoader Evaluation ClassAssigner Classifiers NaiveBayesUpdateable Evaluation IncrementalClassiferEvaluator Visualization Tex

31、tViewer Visualization StripChart Accuracy 準(zhǔn)確率 RMSE 均方根誤差 (root-mean-square error)增量學(xué)習(xí)NaiveBayesUpdateable顯示Soybean數(shù)據(jù)的關(guān)聯(lián)分析用“Explorer”打開“soybean.arff”后,切換到“Associate”選項(xiàng)卡。默認(rèn)關(guān)聯(lián)規(guī)則分析是用Apriori算法。點(diǎn)“Choose”右邊的文本框修改默認(rèn)的參數(shù),彈出的窗口中點(diǎn)“More”可以看到各參數(shù)的說明。點(diǎn)擊“Start”按鈕開始關(guān)聯(lián)分析。WEKA中關(guān)聯(lián)分析的過程從數(shù)據(jù)項(xiàng)的最少支持度100%開始,逐步遞減5,直到至少有所要求的最小置

32、信度為0.9的10條規(guī)則,或者支持度達(dá)到了10%的下限。對(duì)于關(guān)聯(lián)規(guī)則L-R,由支持度決定規(guī)則的統(tǒng)計(jì)顯著性,并由四種不同的因素之一決定規(guī)則的優(yōu)先度。支持度(support) 同時(shí)觀察到前件和后件的概率support = Pr(L,R)置信度(confidence) 出現(xiàn)前件時(shí)同時(shí)出現(xiàn)后件的概率confidence = Pr(L,R)/Pr(L)提升度(lift) 置信度與后件支持度的比率lift = Pr(L,R) / (Pr(L)Pr(R)平衡度(leverage) 在前件和后件統(tǒng)計(jì)獨(dú)立的假設(shè)下,被前件和后件同時(shí)涵蓋的超出期望值的那部分實(shí)例的比例leverage = Pr(L,R) - Pr(

33、L)Pr(R)可信度(conviction) 也用來衡量前件和后件的獨(dú)立性conviction = Pr(L)Pr(not R) / Pr(L,R)任務(wù)一:挖掘支持度在10%到100%之間,并且提升度超過1.5且提升度排在前100位的關(guān)聯(lián)規(guī)則 “l(fā)owerBoundMinSupport”和“upperBoundMinSupport”分別設(shè)為0.1和1 “metricType”設(shè)為lift “minMetric”設(shè)為1.5 “numRules”設(shè)為100任務(wù)二:挖掘支持度在10%到100%之間,并且置信度超過0.8且置信度排在前100位的分類關(guān)聯(lián)規(guī)則分類關(guān)聯(lián)規(guī)則 數(shù)據(jù)集為“weather.nom

34、inal.arff” “car”設(shè)為True “metricType”設(shè)為confidence (只能選confidence!) “minMetric”設(shè)為0.8 “numRules”設(shè)為100聚類分析是把對(duì)象分配給各個(gè)簇,使同簇中的對(duì)象相似,而不同簇間的對(duì)象相異。WEKA在“Explorer”界面的“Cluster”提供聚類分析工具,主要算法包括: SimpleKMeansSimpleKMeans 支持分類屬性的K均值算法 DBScanDBScan 支持分類屬性的DBSCAN算法 EM 基于混合模型的聚類算法 FathestFirst K中心點(diǎn)算法 OPTICS 基于密度的另一個(gè)算法 Cob

35、web 概念聚類算法 sIB 基于信息論的聚類算法,不支持分類屬性 XMeans 能自動(dòng)確定簇個(gè)數(shù)的擴(kuò)展K均值算法,不支持分類屬性聚類模式 使用訓(xùn)練集 (Use training set) 報(bào)告訓(xùn)練對(duì)象的聚類結(jié)果和分組結(jié)果 使用附加的檢驗(yàn)集 (Supplied test set) 報(bào)告訓(xùn)練對(duì)象的聚類結(jié)果和附加的檢驗(yàn)對(duì)象的分組結(jié)果 百分比劃分 (Percentage split) 報(bào)告全部對(duì)象的聚類結(jié)果、訓(xùn)練對(duì)象的聚類結(jié)果,以及檢驗(yàn)對(duì)象的分組結(jié)果 監(jiān)督評(píng)估 (Classes to clusters evaluation) 報(bào)告訓(xùn)練對(duì)象的聚類結(jié)果和分組結(jié)果、類/簇混淆矩陣和錯(cuò)誤分組信息Simple

36、KMeans重要參數(shù) N 簇個(gè)數(shù)DBScan重要參數(shù) E Eps M MinPts文字分析 SimpleKMeans 非監(jiān)督模式:運(yùn)行信息、KMeans結(jié)果(迭代次數(shù)、SSE、簇中心)、檢驗(yàn)對(duì)象的分組信息 監(jiān)督模式:運(yùn)行信息、KMeans結(jié)果(迭代次數(shù)、SSE、簇中心)、類/簇混淆矩陣、錯(cuò)誤分組的對(duì)象個(gè)數(shù)和比例 簇中心:對(duì)于數(shù)值屬性為均值,對(duì)于分類屬性為眾數(shù) DBScan 非監(jiān)督模式:運(yùn)行信息、DBScan結(jié)果(迭代次數(shù)、各個(gè)訓(xùn)練對(duì)象的分組信息)、檢驗(yàn)對(duì)象的分組信息 監(jiān)督模式:運(yùn)行信息、 DBScan結(jié)果(迭代次數(shù)、各個(gè)訓(xùn)練對(duì)象的分組信息)、類/簇混淆矩陣、錯(cuò)誤分組的對(duì)象個(gè)數(shù)和比例圖形分析 (

37、必須將store clusters for visualization勾上) 可視化簇指派 (Visualize cluster assignments):2D散布圖,能夠可視化類/簇混淆矩陣數(shù)據(jù)預(yù)處理 Explorer Preprocess: Explorer Select attributes: 還可以在Preprocess頁面使用屬性選擇方法數(shù)據(jù)可視化 Explorer Visualize: 二維散布圖分類預(yù)測(cè) Explorer Classify: Experimenter: 比較多個(gè)算法的性能 KnowledgeFlow: 批量/增量學(xué)習(xí)模式關(guān)聯(lián)分析 Explorer Associat

38、e:聚類分析 Explorer Cluster:為什么要擴(kuò)展Weka?需要加入第三方的構(gòu)件需要加入自己設(shè)計(jì)或改進(jìn)的算法需要將Weka整合到實(shí)際的應(yīng)用系統(tǒng)中要點(diǎn)1.重新編譯Weka2.加入新算法(第三方、自己設(shè)計(jì)或改進(jìn))3.在自己的Java程序中使用Weka1.下載并安裝JDK和JRE環(huán)境 (http:/ (http:/www.cs.waikato.ac.nz/ml/weka/index_downloading.html )3.下載并安裝開發(fā)環(huán)境Eclipse4.重新編譯weka 解壓WEKA安裝目錄中的weka-src.jar到一個(gè)新建目錄 weka-src下。 打開Eclipse,“File

39、”菜單 - “New”項(xiàng)目- 選擇“Java Project” ?!癙roject name” 寫weka。點(diǎn)擊下一步。 設(shè)置libraries Add External Jars。 從weka-src里面復(fù)制源代碼。 運(yùn)行weka.gui.GUIChooser。1.從weka中文站下載FuzzyCMeans.java2.復(fù)制到weka.clusterers包中3.修改FuzzyCMeans.java,改正錯(cuò)誤代碼4.修改weka.gui.GenericObjectEps ,在#Lists the Clusterers I want to choose from的weka.c

40、lusterers.Clusterer=下加入:weka.clusterers.FuzzyCMeans5.重新編譯,運(yùn)行,可以在weka的Explorer界面上的Cluster選項(xiàng)卡中找到剛剛新添加的FuzzyCMeans算法6.修改FuzzyCMeans.java中的函數(shù)getCapabilities(),以激活FuzzyCMeans算法7.重新編譯,運(yùn)行開發(fā)過程中常用的weka組件: Instances-你的數(shù)據(jù) Filter-用于預(yù)處理數(shù)據(jù) Classifier/Clusterer-從預(yù)處理后的數(shù)據(jù)上建立 Evaluating-評(píng)價(jià)Classifier/Clusterer的優(yōu)劣 Attr

41、ibute Selection-從你的數(shù)據(jù)中去掉不相關(guān)的屬性下面介紹如何在Java程序中使用以上組件。直接讀入一個(gè)ARFF文件并設(shè)置類別屬性import weka.core.Instances; import java.io.BufferedReader; import java.io.FileReader; . BufferedReader reader = new BufferedReader( new FileReader(/some/where/data.arff); Instances data = new Instances(reader); reader.close(); / s

42、etting class attributedata.setClassIndex(data.numAttributes() - 1); 使用DataSource類可讀入ARFF、CSV以及其它可通過Converter導(dǎo)入的文件import weka.core.converters.ConverterUtils.DataSource; . DataSource source = new DataSource(/some/where/data.arff); Instances data = source.getDataSet(); / setting class attribute if the

43、data format does not provide this informationif (data.classIndex() = -1) data.setClassIndex(data.numAttributes() - 1); Weka通過以下兩個(gè)方法來設(shè)置和獲取參數(shù)選項(xiàng) void setOptions(String options) String getOptions() 有多種方式設(shè)置選項(xiàng)手工生成一個(gè)字符串 String options = new String2; options0 = -R; options1 = 1; 用splitOptions 方法將一個(gè)命令行串變成字符串

44、數(shù)組 String options = weka.core.Utils.splitOptions(-R 1); 一個(gè)過濾器有兩個(gè)重要性質(zhì)supervisedsupervised 或 unsupervisedunsupervisedattributeattribute-based 或 instanceinstance-based大多數(shù)過濾器都實(shí)現(xiàn)了OptionHandler 接口,這意味著你可以用String數(shù)組來設(shè)置選項(xiàng),而無需用set-方法。 例如,假設(shè)你要?jiǎng)h除數(shù)據(jù)集的第一個(gè)實(shí)例,你可以執(zhí)行 weka.filters.unsupervised.attribute.Remove R 1設(shè)dat

45、a為一個(gè)Instances對(duì)象,則可按以下方式創(chuàng)建和應(yīng)用一個(gè)Filter import weka.core.Instances; import weka.filters.Filter; import weka.filters.unsupervised.attribute.Remove; . String options = new String2; options0 = -R; / range options1 = 1; / first attribute Remove remove = new Remove(); / new instance of filter remove.setOpti

46、ons(options); / set options remove.setInputFormat(data); / inform filter about dataset *AFTER* setting options Instances newData = Filter.useFilter(data, remove); 使用buildClassifier(Instances) 方法在給定的數(shù)據(jù)集Instances上建立分類器 import weka.classifiers.trees.J48; . String options = new String1; options0 = -U; /

47、 unpruned tree J48 tree = new J48(); / new instance of tree tree.setOptions(options); / set the options tree.buildClassifier(data); / build classifier 實(shí)現(xiàn)了weka.classifiers.UpdateableClassifier接口的分類器可以被增量地訓(xùn)練,這樣節(jié)省了內(nèi)存,因?yàn)閿?shù)據(jù)無需一次性地全部裝入內(nèi)存。訓(xùn)練增量分類器的過程: Call buildClassifier(Instances) with the structure of the

48、 dataset (may or may not contain any actual data rows). Subsequently call the updateClassifier(Instance) method to feed the classifier one by one. 示例示例 / load data ArffLoader loader = new ArffLoader(); loader.setFile(new File(/some/where/data.arff); Instances structure = loader.getStructure(); struc

49、ture.setClassIndex(structure.numAttributes() - 1); / train NaiveBayes NaiveBayesUpdateable nb = new NaiveBayesUpdateable(); nb.buildClassifier(structure); Instance current; while (current = loader.getNextInstance(structure) != null) nb.updateClassifier(current); 示例 import weka.classifiers.Evaluation

50、; import java.util.Random; . Evaluation eval = new Evaluation(newData); eval.crossValidateModel(tree, newData, 10, new Random(1); 示例 import weka.core.Instances; import weka.classifiers.Evaluation; import weka.classifiers.trees.J48; . Instances train = . / from somewhere Instances test = . / from som

51、ewhere / train classifier Classifier cls = new J48(); cls.buildClassifier(train); / evaluate classifier and print some statistics Evaluation eval = new Evaluation(train); eval.evaluateModel(cls, test); System.out.println(eval.toSummaryString(nResultsn=n, false); l從evaluation中獲取結(jié)果的一些方法:nominal class

52、nominal class correct() - number of correctly classified instances (see also incorrect() pctCorrect() - percentage of correctly classified instances (see also pctIncorrect() kappa() - Kappa statistics numeric class numeric class correlation Coefficient() - correlation coefficient general general mea

53、nAbsoluteError() - the mean absolute error rootMeanSquaredError() - the root mean squared error unclassified() - number of unclassified instances pctUnclassified() - percentage of unclassified instances 以下示例裝入未標(biāo)識(shí)類別的數(shù)據(jù)/some/where/unlabeled.arff ,并用已訓(xùn)練好的分類器tree對(duì)每條數(shù)據(jù)進(jìn)行標(biāo)識(shí),最后結(jié)果保存為/some/where/labeled.arff

54、 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import weka.core.Instances; . / load unlabeled data Instances unlabeled = new Instances( new BufferedReader( new FileReader(/some/where/unlabeled.arff); / set class attribute unlabele

55、d.setClassIndex(unlabeled.numAttributes() - 1); / create copy Instances labeled = new Instances(unlabeled); / label instances for (int i = 0; i + unlabeled.classAttribute().value(int) clsLabel); 和分類器用buildClassifier(Instances) 建立類似,聚類(器)用buildClusterer(Instances) 建立。下列代碼片段(code snippet )實(shí)現(xiàn)了EM聚類算法,最大

56、迭代次數(shù)為100 import weka.clusterers.EM; . String options = new String2; options0 = -I; / max. iterations options1 = 100; EM clusterer = new EM(); / new instance of clusterer clusterer.setOptions(options); / set the options clusterer.buildClusterer(data); / build the clusterer 實(shí)現(xiàn)了weka.clusterers.Updateab

57、leClusterer接口的聚類器可以進(jìn)行增量聚類。訓(xùn)練增量式聚類器的過程:Call buildClusterer(Instances) with the structure of the dataset (may or may not contain any actual data rows). Subsequently call the updateClusterer(Instance) method to feed the clusterer one by one. Call updateFinished() after all Instance objects have been pr

58、ocessed, for the clusterer to perform additional computations. 示例示例 / load data ArffLoader loader = new ArffLoader(); loader.setFile(new File(/some/where/data.arff); Instances structure = loader.getStructure(); / train Cobweb Cobweb cw = new Cobweb(); cw.buildClusterer(structure); Instance current;

59、while (current = loader.getNextInstance(structure) != null) cw.updateClusterer(current); cw.updateFinished(); 可用ClusterEvaluation 類評(píng)價(jià)一個(gè)聚類器。以下代碼片段輸出了算法發(fā)現(xiàn)的類的個(gè)數(shù)。 import weka.clusterers.ClusterEvaluation; import weka.clusterers.Clusterer; . ClusterEvaluation eval = new ClusterEvaluation(); Clusterer clu

60、sterer = new EM(); /new clusterer instance clusterer.buildClusterer(data); / build clusterer eval.setClusterer(clusterer); / the cluster to evaluate eval.evaluateClusterer(newData); / data to evaluate the clusterer on System.out.println(# of clusters: + eval.getNumClusters(); public int clusterInsta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論