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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

9、 ?,78,90,?,yesp字符串屬性和標稱屬性的值是區(qū)分大小寫的。若值中含有空格,必須被引號括起來。例如: 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ù)挖掘,面臨的第一個問題往往是我們的數(shù)據(jù)不是ARFF格式的。幸好,WEKA還提供了對CSV文件的支持,而這種格式是被很多其他軟件,比如Excel所支持的。 利用WEKA可以將CSV文件格式轉(zhuǎn)化成ARFF文件格式。ARFF格式是WEKA支持得最好的文件格式。此外,WEKA還提供了通過JDBC訪問數(shù)據(jù)庫的功能。 “Explorer”界面界面 “Explorer”提供了很多功能,是WEKA使用最多的模塊?,F(xiàn)在我們先來熟悉它的界面,然后利用它對數(shù)據(jù)進行預(yù)處理。1

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

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

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

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

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

16、有屬性轉(zhuǎn)為數(shù)值(numeric)屬性。以下是weather.arff轉(zhuǎn)換后的結(jié)果。p增加一個表達式屬性uAddExpression: 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中增加了一個temp/hum屬性,其值為第二個屬性(temperature)除以第三個屬性(humidity)的值。AddExpression E a2/a3 N temp/hump采樣u使用weka.f

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

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

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

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

22、可以建立起預(yù)測的模型。有了這個模型,我們就可以對新的未知實例進行預(yù)測了。衡量模型的好壞主要在于預(yù)測的準確程度。WEKA中的典型分類算法 Bayes: 貝葉斯分類器 BayesNet: 貝葉斯信念網(wǎng)絡(luò) NaveBayes: 樸素貝葉斯網(wǎng)絡(luò) Functions: 人工神經(jīng)網(wǎng)絡(luò)和支持向量機 MultilayerPerceptron: 多層前饋人工神經(jīng)網(wǎng)絡(luò) SMO: 支持向量機(采用順序最優(yōu)化學(xué)習(xí)方法) Lazy: 基于實例的分類器 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: 使用降低錯誤剪枝的決策樹學(xué)習(xí)算法: 基于決策樹的組合方法四種方法 完全使用訓(xùn)練集 使用外部的檢驗集 交叉驗證 設(shè)置折數(shù) 保持方法 設(shè)置訓(xùn)練實例的百分比其他設(shè)置 設(shè)置代價矩陣窗口顯示的文字結(jié)果信息:運行信息使用全部訓(xùn)練數(shù)據(jù)構(gòu)造的分類模型針對訓(xùn)練/檢驗集的預(yù)測效果匯總 k-折交叉驗證的結(jié)果是k次實驗的匯總即 TP=TP1+TPk, FN=FN1+FNk

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

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

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

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

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

29、J48顯示 Datasources ArffLoader Evaluation ClassAssigner Evaluation CrossValidationFoldMaker Classifiers J48 Evaluation ClassifierPerformanceEvaluator Visualization TextViewer Visualization GraphViewer交叉驗證J48顯示交叉驗證BayesNet顯示 Datasources ArffLoader Evaluation ClassAssigner Evaluation CrossValidationFold

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

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

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

33、)Pr(R)可信度(conviction) 也用來衡量前件和后件的獨立性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.nomi

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

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

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

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

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

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

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

41、相關(guān)的屬性下面介紹如何在Java程序中使用以上組件。直接讀入一個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(); / setting class attributedat

42、a.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 data format does not prov

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

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

45、和應(yīng)用一個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.setOptions(options); / set optio

46、ns 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; / unpruned tree J48 tree =

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

48、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(); structure.setClassIndex(struct

49、ure.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; import java.util.Random

50、; . 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 somewhere / train classifier

51、 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 nominal class correct() -

52、 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 meanAbsoluteError() - the me

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

54、eader; 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 unlabeled.setClassIndex(unlabeled

55、.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 )實現(xiàn)了EM聚類算法,最大迭代次數(shù)為100 import weka.clus

56、terers.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 實現(xiàn)了weka.clusterers.UpdateableClusterer接口的聚類器可以進行增量聚類

57、。訓(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 processed, for the clustere

58、r 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; while (current = loader.g

59、etNextInstance(structure) != null) cw.updateClusterer(current); cw.updateFinished(); 可用ClusterEvaluation 類評價一個聚類器。以下代碼片段輸出了算法發(fā)現(xiàn)的類的個數(shù)。 import weka.clusterers.ClusterEvaluation; import weka.clusterers.Clusterer; . ClusterEvaluation eval = new ClusterEvaluation(); Clusterer clusterer = 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 clusterInstanceclu

溫馨提示

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

評論

0/150

提交評論