關于我們
書單推薦
新書推薦
|
數(shù)據(jù)挖掘與機器學習——WEKA應用技術與實踐(第二版)
本書借助代表當今數(shù)據(jù)挖掘和機器學習*高水平的著名開源軟件Weka,通過大量的實踐操作,使讀者了解并掌握數(shù)據(jù)挖掘和機器學習的相關技能,拉近理論與實踐的距離。全書共分9章,主要內(nèi)容包括Weka介紹、探索者界面、知識流界面、實驗者界面、命令行界面、Weka高級應用、Weka API、學習方案源代碼分析和機器學習實戰(zhàn)。 本書系統(tǒng)講解Weka 3.7.13的操作、理論和應用,內(nèi)容全面、實例豐富、可操作性強,做到理論與實踐的統(tǒng)一。本書適合數(shù)據(jù)挖掘和機器學習相關人員作為技術參考書使用,也適合用作計算機專業(yè)高年級本科生和研究生的教材或教學參考用書。
系統(tǒng)講解數(shù)據(jù)挖掘機器學習工具Weka經(jīng)典的開源挖掘工具、開放的Java環(huán)境初學者的入門*選、研究者的鉆研利器
再 版 前 言
自本書第一版出版到現(xiàn)在已經(jīng)過去近兩年。這段時間內(nèi),數(shù)據(jù)挖掘和機器學習領域快速發(fā)展,投入到相關領域研究的人員也越來越多,Weka愛好者隊伍也隨之逐年發(fā)展壯大,Weka學習討論群所討論內(nèi)容的技術含量也日漸豐富。 第二版的修訂工作以Weka 3.7.13版本為準,為此,全書重新截圖,按照Weka新版本重新修訂正文內(nèi)容。此次再版修改了第一版中一些表述不清楚的陳述、前后不一致的術語,還新增了以下內(nèi)容:第1章1.3節(jié)新增無法連接包管理器的解決辦法,第2章2.7節(jié)新增邊界可視化工具和代價/收益分析可視化及相關實驗內(nèi)容,第4章4.2節(jié)新增拆分評估器可視化參數(shù)內(nèi)容,新增完整的第9章機器學習實戰(zhàn),豐富了Weka實踐內(nèi)容。 修訂后的第二版共分9章。第1章介紹Weka的歷史和功能、數(shù)據(jù)挖掘和機器學習的基本概念、Weka系統(tǒng)安裝,以及示例數(shù)據(jù)集;第2章介紹探索者(Explorer)界面的使用,主要內(nèi)容包括圖形用戶界面、預處理、分類、聚類、關聯(lián)、選擇屬性,以及可視化;第3章介紹知識流(KnowledgeFlow)界面,主要內(nèi)容有知識流介紹、知識流組件、使用知識流組件,以及實踐教程;第4章介紹實驗者(Experimenter)界面,主要內(nèi)容有實驗者界面介紹、標準實驗、遠程實驗,以及實驗結果分析;第5章介紹命令行界面,主要內(nèi)容有命令行界面介紹、Weka結構、命令行選項、過濾器和分類器選項,以及Weka包管理器;第6章介紹一些Weka的高級應用,主要介紹Weka的貝葉斯網(wǎng)絡、神經(jīng)網(wǎng)絡、文本分類和時間序列分析及預測;第7章介紹Weka API,說明使用Java源代碼來實現(xiàn)常見數(shù)據(jù)挖掘任務的基礎知識,并給出一個展示如何進行數(shù)據(jù)挖掘的綜合示例;第8章通過對NaiveBayes學習方案的源代碼進行分析,深入研究Weka學習方案的工作原理,為開發(fā)人員提供實現(xiàn)學習算法的編碼基礎;第9章介紹如何使用Weka工具挖掘?qū)嶋H的大型數(shù)據(jù)集,以精選的兩個KDD競賽數(shù)據(jù)集為例,使讀者能夠快速進入實際的案例場景,應用所學數(shù)據(jù)挖掘知識來面對大數(shù)據(jù)的挖掘問題,考驗自己完成難度較大的挖掘項目的動手能力。 第二版改動的內(nèi)容較多,總體工作量很大,花費了很多時間。從醞釀第二版內(nèi)容開始,至其殺青,歷時超過一年。作者的感覺是:比編寫第一版還要辛苦些。且不說Weka版本變動導致的修改,重新截圖、重新梳理文字、重新改寫API文檔等,費時費力。因時間變化引起的一個小小的技術變動,就讓人費力應對。例如,懷卡托大學后來不再提供包管理器元數(shù)據(jù),導致第一版所述的解決辦法不再有效,只能重新尋找解決包管理器無法連接的替代方法。又如,新版本W(wǎng)eka的NaiveBayes源代碼有一些變動,作者不得不修訂第8章的內(nèi)容以適應新的版本變化。再如,第一版提供的網(wǎng)絡鏈接有的已經(jīng)不再有效,出版社編輯老師測試了所有的鏈接,保證了第二版提供的網(wǎng)絡鏈接的正確性。當然,由于世界變化太快,無法保證在一兩年后這些鏈接不會失效,這是無可奈何的事,作者只能保證書中敘述的方案在交稿時可行。 最耗費心力的應該是第9章的編寫。早在第一版的寫作中,曾經(jīng)就有編寫一個章節(jié)專門講述Weka綜合應用案例的設想,但苦于手上沒有合適的實驗對象。理想的應用案例必須滿足如下要求:第一,難度適中。不能太簡單,過于簡單的小兒科案例會違背編寫綜合應用的初衷;也不能太難,如果應用的技術方案太偏或難以理解,就達不到鍛煉讀者實際動手能力的意義。第二,領域不能太窄,應該讓絕大多數(shù)人都能理解。第三,運算量不能太大,應該滿足普通計算機能夠處理的要求。這就限制了目標數(shù)據(jù)集文件大小為數(shù)十兆字節(jié)至數(shù)吉字節(jié)范圍以內(nèi),實例總數(shù)在數(shù)十萬條至數(shù)千萬條之間,一臺計算機能夠在兩周左右運行完畢。作者花費了很長時間尋找滿足以上要求的案例,最后選中KDD Cup 1999和KDD Cup 2010競賽數(shù)據(jù)集,前者共有42個屬性,10%數(shù)據(jù)子集文件的大小為45MB,樣本數(shù)為494021,完整的數(shù)據(jù)集文件大小為743MB,樣本數(shù)為4898431;后者有兩個數(shù)據(jù)集,本書選中的是較大的數(shù)據(jù)集,共有21個屬性,訓練數(shù)據(jù)集文件大小為5.29GB,樣本數(shù)為20012498。認真的讀者會發(fā)現(xiàn),完成這兩個案例的實驗將會很辛苦,花費的精力和時間會遠超預期。作者想象出這么一個畫面:讀者按照書中的實驗方法工作至深夜,硬盤燈不停閃爍,CPU利用率一直高居95%,讀者擔心心愛的計算機會突然崩潰但仍然堅持,直至最終勝利。作者預先恭喜那些能夠獨立完成實驗的讀者,因為你們有足夠的能力和毅力應付技術挑戰(zhàn),勝任要求極高的挖掘工作。 盡管在寫作中付出了很多艱辛的勞動,但限于作者有限的能力和精力,書中肯定還存在一些缺陷,甚至錯誤,敬請各位讀者批評指正。作者感謝修訂工作的貢獻者,昆明理工大學計算機系吳霖老師審閱了本書第9章內(nèi)容,提出了很多建設性建議,感謝吳霖老師的貢獻。昆明理工大學2014級研究生衛(wèi)明同學參與了第1章和第2章的修訂工作;光榮與夢想、弦月、Brady、海、__末瞳.夫、不說再見!等網(wǎng)友對第一版提出了寶貴的建議,作者在第二版中采納了這些建議,感謝這些朋友的貢獻。第9章參考了昆明理工大學2014屆計算機系吳澤恒同學本科畢業(yè)設計論文的部分內(nèi)容,他是我指導過的最優(yōu)秀的學生,感謝吳澤恒同學。感謝選擇本書為高校教學參考書的教師在使用過程中提出的反饋意見和建議,作者學習到一些很有價值的思考方式。再次感謝清華大學出版社的編輯老師在出版方面提出的建設性意見和給予的無私幫助,編輯老師一絲不茍的工作態(tài)度給我留下很深的印象。感謝購買本書的朋友,歡迎批評指正,你們的批評建議都會受到重視,并在再版中改進。希望第二版的發(fā)行能夠吸引更多的讀者和反饋建議。 編 者 第一版前言 當代中國掀起了一股學習數(shù)據(jù)挖掘和機器學習的熱潮,從斯坦福大學公開課"機器學習課程",到龍星計劃的"機器學習Machine Learning"課程,再到加州理工學院公開課"機器學習與數(shù)據(jù)挖掘"課程,參加這些網(wǎng)絡課程學習的人群日益壯大,數(shù)據(jù)挖掘和機器學習炙手可熱。 數(shù)據(jù)挖掘是數(shù)據(jù)庫知識發(fā)現(xiàn)中的一個步驟,它從大量數(shù)據(jù)中自動提取出隱含的、過去未知的、有價值的潛在信息。機器學習主要設計和分析一些讓計算機可以自動"學習"的算法,這類算法可以從數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進行預測。數(shù)據(jù)挖掘和機器學習這兩個領域聯(lián)系密切,數(shù)據(jù)挖掘利用機器學習提供的技術來分析海量數(shù)據(jù),以發(fā)掘數(shù)據(jù)中隱含的有用信息。 數(shù)據(jù)挖掘和機器學習這兩個密切相關的領域存在一個特點:理論很強而實踐很弱。眾所周知,理論和實踐是研究者的左腿和右腿,缺了一條腿的研究者肯定難以前行。有的技術人員花了若干年時間進行研究,雖然了解甚至熟悉了很多公式和算法,但仍然難以真正去面對一個實際挖掘問題并很好地解決手上的技術難題,其根本原因就是缺乏實踐。 本書就是為了試圖解決數(shù)據(jù)挖掘和機器學習的實踐問題而編寫的。本書依托新西蘭懷卡托大學采用Java語言開發(fā)的著名開源軟件Weka,該系統(tǒng)自1993年開始由新西蘭政府資助,至今已經(jīng)歷了20多年的發(fā)展,功能已經(jīng)十分強大和成熟。Weka集合了大量的機器學習和相關技術,受領域發(fā)展和用戶需求所推動,代表了當今數(shù)據(jù)挖掘和機器學習領域的最高水平。因此,研究Weka能幫助研究者從實踐去驗證所學的理論,顯然有很好的理論意義及實踐意義。 本書共分8章。第1章介紹Weka的歷史和功能、數(shù)據(jù)挖掘和機器學習的基本概念、Weka系統(tǒng)安裝,以及示例數(shù)據(jù)集;第2章介紹Explorer界面的使用,主要內(nèi)容包括圖形用戶界面、預處理、分類、聚類、關聯(lián)、選擇屬性,以及可視化;第3章介紹KnowledgeFlow界面,主要內(nèi)容有知識流介紹、知識流組件、使用知識流組件,以及實踐教程;第4章介紹Experimenter界面,主要內(nèi)容有Experimenter界面介紹、標準實驗、遠程實驗,以及實驗結果分析;第5章介紹命令行界面,主要內(nèi)容有命令行界面介紹、Weka結構、命令行選項、過濾器和分類器選項,以及Weka包管理器;第6章介紹一些Weka的高級應用,主要介紹Weka的貝葉斯網(wǎng)絡、神經(jīng)網(wǎng)絡、文本分類和時間序列分析及預測;第7章介紹Weka API,說明使用Java源代碼來實現(xiàn)常見數(shù)據(jù)挖掘任務的基礎知識,并給出一個展示如何進行數(shù)據(jù)挖掘的綜合示例;第8章通過對一個學習方案的源代碼進行分析,深入研究Weka學習方案的工作原理,為開發(fā)人員提供編寫學習算法的技術基礎。 在閱讀大量相關文獻的過程中,作者深深為國外前輩們的理論功底和實踐技能所折服,那些巨人們站在高處,使人難以望其項背。雖然得益于諸如網(wǎng)易公開課和龍星計劃等項目,我們有機會和全世界站在同一個數(shù)量級的知識起跑線上,但是,這并不意味著能在將來的競爭中占據(jù)優(yōu)勢,正如孫中山先生所說"革命尚未成功,同志仍須努力",讓我們一起共勉。 在本書的編寫過程中,作者力求精益求精,但限于作者的知識和能力,且很多材料都難以獲取,考證和去偽存真是一件時間開銷非常大和異常困難的工作,因此書中肯定會有遺漏及不妥之處,敬請廣大讀者批評指正。 作者專門為本書設置讀者QQ群,歡迎讀者加群,下載和探討書中源代碼,抒寫讀書心得,進行技術交流等。 本書承蒙很多朋友、同事的幫助才得以成文。特別感謝Weka開發(fā)組的全體人員,他們將自己20年心血匯聚的成果開源,對本領域貢獻巨大;衷心感謝清華大學出版社的編輯老師在內(nèi)容組織、排版,以及出版方面提出的建設性意見和給予的無私幫助;感謝昆明理工大學提供的寬松的研究環(huán)境;感謝昆明理工大學計算機系教師繆祥華博士,他為本書的成文提出了很多建設性的建議,對本書的改進幫助甚大;感謝昆明理工大學計算機系海歸博士吳霖老師,他經(jīng)常和作者一起討論機器學習的技術問題,為本書的編寫貢獻了很多智慧;感謝昆明理工大學現(xiàn)代教育中心的何佳老師,他完成了本書部分代碼的編寫和測試工作;感謝國內(nèi)外的同行們,他們在網(wǎng)絡論壇和博客上發(fā)表了眾多卓有見識的文章,作者從中學習到很多知識,由于來源比較瑣碎,無法一一列舉,感謝他們對本書的貢獻;感謝理解和支持我的家人,他們是我寫作的堅強后盾。感謝購買本書的朋友,歡迎批評指正,你們的批評建議都會受到重視,并在再版中改進。 編 者
袁梅宇,男,工學博士,碩士導師,現(xiàn)在昆明理工大學計算機系任教。為本科生和研究生主講Java程序設計、JavaEE技術、數(shù)據(jù)庫原理、人工智能、DotNet技術等核心課程,參加過863CIMSNet建設、中歐合作項目DRAGON和多項國家基金和省基金項目,第*作者公開發(fā)表論文十余篇,軟件著作權(頒證)六項。
第1章 Weka介紹 1
1.1 Weka簡介 2 1.1.1 Weka歷史 3 1.1.2 Weka功能簡介 3 1.2 基本概念 5 1.2.1 數(shù)據(jù)挖掘和機器學習 5 1.2.2 數(shù)據(jù)和數(shù)據(jù)集 5 1.2.3 ARFF格式 6 1.2.4 預處理 7 1.2.5 分類與回歸 10 1.2.6 聚類分析 12 1.2.7 關聯(lián)分析 12 1.3 Weka系統(tǒng)安裝 13 1.3.1 系統(tǒng)要求 13 1.3.2 安裝過程 14 1.3.3 Weka使用初步 16 1.3.4 系統(tǒng)運行注意事項 18 1.4 訪問數(shù)據(jù)庫 24 1.4.1 配置文件 25 1.4.2 數(shù)據(jù)庫設置 26 1.4.3 常見問題及解決辦法 27 1.5 示例數(shù)據(jù)集 28 1.5.1 天氣問題 29 1.5.2 鳶尾花 30 1.5.3 CPU 31 1.5.4 玻璃數(shù)據(jù)集 32 1.5.5 美國國會投票記錄 33 1.5.6 乳腺癌數(shù)據(jù)集 33 課后強化練習 34 第2章 探索者界面 35 2.1 圖形用戶界面 36 2.1.1 標簽頁簡介 36 2.1.2 狀態(tài)欄 37 2.1.3 圖像輸出 37 2.1.4 手把手教你用 37 2.2 預處理 40 2.2.1 加載數(shù)據(jù) 40 2.2.2 屬性處理 43 2.2.3 過濾器 44 2.2.4 過濾器算法介紹 46 2.2.5 手把手教你用 52 2.3 分類 59 2.3.1 分類器選擇 59 2.3.2 分類器訓練 61 2.3.3 分類器輸出 62 2.3.4 分類算法介紹 65 2.3.5 分類模型評估 79 2.3.6 手把手教你用 81 2.4 聚類 98 2.4.1 Cluster標簽頁的操作 98 2.4.2 聚類算法介紹 99 2.4.3 手把手教你用 101 2.5 關聯(lián) 107 2.5.1 Associate標簽頁的操作 107 2.5.2 關聯(lián)算法介紹 108 2.5.3 手把手教你用 111 2.6 選擇屬性 117 2.6.1 Select attributes標簽頁的 操作 118 2.6.2 選擇屬性算法介紹 119 2.6.3 手把手教你用 120 2.7 可視化 128 2.7.1 Visualize標簽頁 128 2.7.2 邊界可視化工具 131 2.7.3 代價/收益分析可視化 133 2.7.4 手把手教你用 134 課后強化練習 140 第3章 知識流界面 143 3.1 知識流介紹 144 3.1.1 知識流特性 144 3.1.2 知識流界面布局 145 3.2 知識流組件 148 3.2.1 數(shù)據(jù)源 148 3.2.2 數(shù)據(jù)接收器 151 3.2.3 評估器 155 3.2.4 可視化器 156 3.2.5 其他工具 158 3.3 使用知識流組件 160 3.4 手把手教你用 162 課后強化練習 181 第4章 實驗者界面 183 4.1 簡介 184 4.2 標準實驗 185 4.2.1 簡單實驗 185 4.2.2 高級實驗 190 4.2.3 手把手教你用 198 4.3 遠程實驗 210 4.3.1 遠程實驗設置 210 4.3.2 手把手教你用 213 4.4 分析結果 221 4.4.1 獲取實驗結果 221 4.4.2 動作 221 4.4.3 配置測試 222 4.4.4 保存結果 225 4.4.5 手把手教你用 225 課后強化練習 229 第5章 命令行界面 231 5.1 命令行界面介紹 232 5.1.1 命令調(diào)用 233 5.1.2 命令自動完成 234 5.2 Weka結構 235 5.2.1 類實例和包 235 5.2.2 weka.core包 236 5.2.3 weka.classifiers包 237 5.2.4 其他包 238 5.3 命令行選項 238 5.3.1 常規(guī)選項 239 5.3.2 特定選項 241 5.4 過濾器和分類器選項 242 5.4.1 過濾器選項 242 5.4.2 分類器選項 245 5.4.3 手把手教你用 247 5.5 包管理器 252 5.5.1 命令行包管理器 252 5.5.2 運行安裝的算法 254 課后強化練習 255 第6章 Weka高級應用 257 6.1 貝葉斯網(wǎng)絡 258 6.1.1 簡介 258 6.1.2 貝葉斯網(wǎng)絡編輯器 261 6.1.3 在探索者界面中使用貝葉斯 網(wǎng)絡 269 6.1.4 結構學習 270 6.1.5 分布學習 272 6.1.6 查看貝葉斯網(wǎng)絡 273 6.1.7 手把手教你用 276 6.2 神經(jīng)網(wǎng)絡 286 6.2.1 GUI使用 286 6.2.2 手把手教你用 289 6.3 文本分類 293 6.3.1 文本分類示例 294 6.3.2 分類真實文本 298 6.3.3 手把手教你用 300 6.4 時間序列分析及預測 306 6.4.1 使用時間序列環(huán)境 306 6.4.2 手把手教你用 318 課后強化練習 326 第7章 Weka API 327 7.1 加載數(shù)據(jù) 328 7.1.1 從文件加載數(shù)據(jù) 328 7.1.2 從數(shù)據(jù)庫加載數(shù)據(jù) 329 7.1.3 手把手教你用 330 7.2 保存數(shù)據(jù) 335 7.2.1 保存數(shù)據(jù)至文件 335 7.2.2 保存數(shù)據(jù)至數(shù)據(jù)庫 335 7.2.3 手把手教你用 336 7.3 處理選項 339 7.3.1 選項處理方法 339 7.3.2 手把手教你用 340 7.4 內(nèi)存數(shù)據(jù)集處理 341 7.4.1 在內(nèi)存中創(chuàng)建數(shù)據(jù)集 341 7.4.2 打亂數(shù)據(jù)順序 345 7.4.3 手把手教你用 345 7.5 過濾 349 7.5.1 批量過濾 350 7.5.2 即時過濾 351 7.5.3 手把手教你用 351 7.6 分類 355 7.6.1 分類器構建 355 7.6.2 分類器評估 356 7.6.3 實例分類 358 7.6.4 手把手教你用 359 7.7 聚類 370 7.7.1 聚類器構建 370 7.7.2 聚類器評估 371 7.7.3 實例聚類 373 7.7.4 手把手教你用 373 7.8 屬性選擇 379 7.8.1 使用元分類器 380 7.8.2 使用過濾器 380 7.8.3 使用底層API 381 7.8.4 手把手教你用 381 7.9 可視化 384 7.9.1 ROC曲線 385 7.9.2 圖 385 7.9.3 手把手教你用 386 7.10 序列化 391 7.10.1 序列化基本方法 391 7.10.2 手把手教你用 392 7.11 文本分類綜合示例 395 7.11.1 程序運行準備 395 7.11.2 源程序分析 396 7.11.3 運行說明 403 課后強化練習 404 第8章 學習方案源代碼分析 405 8.1 NaiveBayes源代碼分析 406 8.2 實現(xiàn)分類器的約定 427 課后強化練習 429 第9章 機器學習實戰(zhàn) 431 9.1 數(shù)據(jù)挖掘過程概述 432 9.1.1 CRISP-DM過程 432 9.1.2 數(shù)據(jù)預處理 433 9.1.3 挖掘項目及工具概述 434 9.2 實戰(zhàn)KDD Cup 1999 434 9.2.1 任務描述 435 9.2.2 數(shù)據(jù)集描述 436 9.2.3 挖掘詳細過程 438 9.3 實戰(zhàn)KDD Cup 2010 447 9.3.1 任務描述 447 9.3.2 數(shù)據(jù)集描述 447 9.3.3 挖掘詳細過程 450 9.3.4 更接近實際的挖掘過程 459 課后強化練習 471 附錄A 中英文術語對照 472 附錄B Weka算法介紹 476 過濾器算法介紹 476 分類算法介紹 498 聚類算法介紹 526 關聯(lián)算法介紹 530 選擇屬性算法介紹 532 參考文獻 537
第2章 探索者界面
探索者(Explorer)界面是Weka的主要圖形用戶界面,其全部功能都可通過菜單選擇或表單填寫進行訪問。本章介紹探索者的圖形用戶界面、預處理、分類、聚類、關聯(lián)、選擇屬性和可視化等內(nèi)容,內(nèi)容非常豐富,學習這些知識可以全面了解Weka的功能,快速上手實際的挖掘任務。 2.1 圖形用戶界面 啟動Weka GUI 選擇器窗口之后,單擊Explorer按鈕,即可啟動探索者界面。這時,由于沒有加載數(shù)據(jù)集,除Preprocess標簽頁外,其他標簽頁都變灰而不可用?梢允褂肙pen file、Open URL、Open DB或者Generate按鈕加載或產(chǎn)生數(shù)據(jù)集,加載數(shù)據(jù)集之后,其他標簽頁才可以使用。 這里以打開文件為例進行說明。單擊Open file按鈕,通過彈出的“打開”對話框,選擇打開data子目錄下的iris.arff文件,加載數(shù)據(jù)集后的探索者界面如圖2.1所示。 圖2.1 探索者界面 下面按照先整體后局部的順序介紹圖形用戶界面。 2.1.1 標簽頁簡介 圖2.1所示界面的頂部有六個不同的標簽頁,分別對應Weka所支持的多種數(shù)據(jù)挖掘方式。 這六個標簽頁的介紹如下。 (1) Preprocess(預處理):選擇數(shù)據(jù)集,并以不同方式對其進行修改。 (2) Classify(分類):訓練用于分類或回歸的學習方案,并對其進行評估。 (3) Cluster(聚類):學習數(shù)據(jù)集聚類方案。 (4) Associate(關聯(lián)):學習數(shù)據(jù)關聯(lián)規(guī)則,并對其進行評估。 (5) Select attributes(選擇屬性):選擇數(shù)據(jù)集中預測效果最好的部分屬性。 (6) Visualize(可視化):查看不同的二維數(shù)據(jù)散點圖,并與其進行互動。 每個標簽頁都可完成不同工作,單擊相應的標簽即可實現(xiàn)標簽頁的切換。 界面底部包括Status(狀態(tài))欄、Log(日志)按鈕和一只Weka鳥,這些都一直保持可見,不論用戶切換到哪一個標簽頁。 2.1.2 狀態(tài)欄 狀態(tài)欄位于界面最下部,可以讓用戶了解到現(xiàn)在進行到哪一步。例如,如果Weka探索者正在忙于加載數(shù)據(jù)文件,狀態(tài)欄中會顯示相應的狀態(tài)信息。 除了顯示狀態(tài)之外,還可以右擊鼠標來顯示內(nèi)存信息,以及運行垃圾回收器以清理內(nèi)存。在狀態(tài)欄的任意位置右擊,彈出的快捷菜單中只包括兩個菜單項:Memory information(內(nèi)存信息)和Run garbage collector(運行垃圾回收器)。第一個菜單項用于顯示W(wǎng)eka當前可用的內(nèi)存空間;第二個菜單項用于啟動Java垃圾回收器,搜尋不再使用的內(nèi)存并釋放,以回收部分內(nèi)存空間,提供給新的任務使用。需要指出的是,垃圾回收器是一個不間斷運行的后臺任務,如果不強制進行垃圾回收,Java虛擬機也會在適當時候自動啟動垃圾回收器。 Log按鈕位于狀態(tài)欄的右面,單擊該按鈕會打開可以滾動的日志窗口,顯示在此次運行期間內(nèi)Weka 進行的全部活動以及每項活動的時間戳。不管是使用GUI、命令行還是Simple CLI,日志都會包含分類、聚類、屬性選擇等操作的完整的設置字符串,用戶可以進行復制和粘貼操作。順便提醒讀者,通過學習日志里記錄的命令,可以深層次地了解Weka的內(nèi)部運行機制。 在Log按鈕的右邊,可以看到被稱為Weka狀態(tài)圖標的鳥。如果沒有處理過程在運行,小鳥會坐下來打個盹!?”符號旁邊的數(shù)字顯示目前有多少個正在進行處理的進程,當系統(tǒng)空閑時,該數(shù)字為零,數(shù)字會隨著正在進行處理進程數(shù)的增加而增加。當啟動處理進程時,小鳥會站起來不停走動。如果小鳥長時間站著不動,說明Weka出現(xiàn)運行錯誤,此時用戶需要關閉并重新啟動探索者界面。 2.1.3 圖像輸出 Weka中顯示的大部分圖形,包括本章的探索者界面和后面章節(jié)的知識流界面、實驗者界面顯示的圖形,以及通過Weka GUI選擇器菜單帶出的GraphVisualizer(圖可視化工具)或TreeVisualizer(樹可視化工具)顯示的圖形,都可以保存為圖像文件以備將來使用。保存方法是,在按住Alt鍵和Shift鍵的同時,在要保存的圖形上單擊,啟動保存文件對話框。Weka支持的圖像文件格式有BMP、JPEG、PNG和Postscript的EPS,用戶可以選擇圖像文件格式,還可以修改輸出圖像文件的尺寸。 2.1.4 手把手教你用 1. 啟動Weka 雙擊桌面上的Weka 3.7快捷方式,啟動Weka GUI選擇器窗口,如圖2.2所示。 單擊Explorer按鈕啟動探索者界面,如圖2.3所示,F(xiàn)在,除Preprocess標簽頁可用外,其余標簽頁都不可用。 圖2.2 Weka GUI選擇器窗口 圖2.3 探索者界面 2. 了解標簽頁 單擊圖2.3所示界面中的Open file按鈕,彈出“打開”對話框,導航至Weka安裝目錄下的data子目錄,選擇iris.arff文件,如圖2.4所示。單擊“打開”按鈕,打開該文件。 圖2.4 “打開”對話框 打開文件(或稱為加載數(shù)據(jù))后的探索者界面如圖2.5所示。可以看到,加載數(shù)據(jù)后,六個標簽頁都變?yōu)榭捎脿顟B(tài)。 圖2.5 打開文件后的探索者界面 讀者可以自行切換標簽頁,初步了解各標簽頁的功能,為后續(xù)學習打下基礎。 3. 了解狀態(tài)欄 不論切換到哪個標簽頁,都可在探索者界面下部的狀態(tài)欄中查看狀態(tài)信息。在狀態(tài)欄任意位置右擊,在彈出的快捷菜單中選擇Memory information菜單項,狀態(tài)欄顯示用斜杠分割的內(nèi)存信息,格式為:空閑內(nèi)存/全部內(nèi)存/最大內(nèi)存,單位是字節(jié),如圖2.6所示。 圖2.6 內(nèi)存信息 如果在快捷菜單中選擇Run garbage collector菜單項,狀態(tài)欄中會顯示OK信息,表示已經(jīng)啟動了垃圾回收器,如圖2.7所示。 圖2.7 運行垃圾回收器 單擊狀態(tài)欄右邊的Log按鈕,可以查看當前日志,如圖2.8所示。 圖2.8 日志窗口 4. 保存圖像文件 單擊圖2.5所示界面右邊的Visualize All(全部可視化)按鈕,打開如圖2.9所示的全部可視化窗口。 圖2.9 全部可視化窗口 同時按住Alt鍵和Shift鍵,并在圖2.9所示的五幅圖標中任選一圖標,在圖標的任意位置單擊,啟動Save as對話框。設置“文件名”為test,選擇“文件類型”為jpg(或其他格式),單擊“保存”按鈕,就可將其保存為圖像文件,如圖2.10所示。 圖2.10 Save as對話框 在圖2.10的右邊,還可以定制圖像文件的長、寬尺寸,單位為像素。選中Use custom dimensions(使用自定義尺寸)復選框,就可以設置圖像尺寸。如果選中Keep aspect ratio(保持寬高比)復選框,則在修改圖像長(或?qū)?的同時,會按比例自動縮放寬(或長)。 2.2 預 處 理 Preprocess標簽頁可用于從文件、URL或數(shù)據(jù)庫中加載數(shù)據(jù)集,并且根據(jù)應用要求或領域知識過濾掉不需要進行處理或不符合要求的數(shù)據(jù)。 2.2.1 加載數(shù)據(jù) Preprocess標簽頁中頂部的前四個按鈕可以讓用戶將數(shù)據(jù)加載到Weka系統(tǒng)。Open file按鈕用于啟動“打開”對話框,用戶可以瀏覽本地文件系統(tǒng),打開本地數(shù)據(jù)文件。Open URL按鈕要求用戶提供一個URL地址,Weka使用HTTP協(xié)議從網(wǎng)絡位置下載數(shù)據(jù)文件。Open DB按鈕用于從數(shù)據(jù)庫中讀取數(shù)據(jù),支持所有能夠用JDBC驅(qū)動程序讀取的數(shù)據(jù)庫,使用SQL語句或存儲過程讀取數(shù)據(jù)表。注意,必須根據(jù)自己的計算機環(huán)境配置,相應修改weka\experiment\DatabaseUtils.props配置文件后才能訪問數(shù)據(jù)庫,具體參見1.4節(jié)內(nèi)容。Generate按鈕用于讓用戶使用不同的DataGenerators(數(shù)據(jù)生成器)生成人工數(shù)據(jù),適用于分類功能的人工數(shù)據(jù)可以由決策列表RDG1、徑向基函數(shù)網(wǎng)絡RandomRBF、貝葉斯網(wǎng)絡BayesNet、LED24等算法產(chǎn)生,人工回歸數(shù)據(jù)也可以根據(jù)數(shù)學表達式生成,用于聚類的人工數(shù)據(jù)可以使用現(xiàn)成的生成算法產(chǎn)生。 使用Open file按鈕,可以讀取多種數(shù)據(jù)格式的文件,包括Weka ARFF格式、C4.5數(shù)據(jù)格式、CSV格式、JSON實例文件格式、LibSVM數(shù)據(jù)文件格式、Matlab ASCII文件格式、svm輕量級數(shù)據(jù)文件格式、XRFF格式,以及序列化實例的格式。其中,ARFF格式的后綴為.arff,C4.5數(shù)據(jù)格式的后綴為.data或.names,CSV格式的后綴為.csv,JSON實例文件格式的后綴為.json,LibSVM數(shù)據(jù)文件格式的后綴為.libsvm,Matlab ASCII文件格式的后綴為.m,svm輕量級數(shù)據(jù)文件格式的后綴為.dat,XRFF格式的后綴為.xrff,序列化實例對象文件的后綴為.bsi。有的格式后綴還會加上.gz,這代表對應文件的壓縮形式。 另外,使用Save(保存)按鈕,可以將已加載的數(shù)據(jù)保存為Weka支持的文件格式。該功能特別適合在不同文件格式之間進行轉換,以及學習Weka文件格式的細節(jié)。 由于存在多種數(shù)據(jù)格式,為了從不同種類的數(shù)據(jù)源中導入數(shù)據(jù),Weka提供實用工具類進行轉換,這種工具稱為轉換器(converters),位于weka.core.converters包中。按照功能的不同,轉換器分為加載器和保存器,前者的Java類名以Loader結束,后者以Saver結束。 加載數(shù)據(jù)后,Preprocess標簽頁會在Current relation(當前關系)選項組中顯示當前數(shù)據(jù)集的一些總結信息。Relation(關系)欄顯示關系名稱,該名稱由加載的文件給定;Attributes(屬性)欄顯示數(shù)據(jù)集中的屬性(或特征)個數(shù);Instances(實例)欄顯示數(shù)據(jù)集中的實例(或數(shù)據(jù)點/記錄)個數(shù);Sum of weights(權重和)欄顯示全部實例的權重之和。例如,當加載iris數(shù)據(jù)集后,Current relation選項組中顯示關系名稱為iris,屬性個數(shù)為5,實例個數(shù)為150,權重和為150,如圖2.11所示。 圖2.11 Current relation選項組 Weka根據(jù)文件后綴調(diào)用不同的轉換器來加載數(shù)據(jù)集。如果Weka無法加載數(shù)據(jù),就會嘗試以ARFF格式解釋數(shù)據(jù),如果再次失敗,就會彈出如圖2.12所示的提示對話框,提示W(wǎng)eka無法自行決定使用哪一個文件加載器,需要用戶自己來選擇。 單擊圖2.12中的“確定”按鈕后,會彈出如圖2.13所示的通用對象編輯器對話框,讓用戶選擇能打開數(shù)據(jù)文件的對應轉換器。默認轉換器為CSVLoader,該轉換器專門用于加載后綴為.csv的文件。如果用戶已經(jīng)確定數(shù)據(jù)文件格式是CSV格式,那么可以輸入日期格式、字段分割符等信息。如果對對話框里的各選項不了解,可以單擊More按鈕查看使用說明。 圖2.12 加載數(shù)據(jù)失敗 如果用戶已經(jīng)知道數(shù)據(jù)文件格式不是CSV格式,可以單擊通用對象編輯器對話框上部的Choose按鈕選擇其他的轉換器,如圖2.14所示。 圖2.13 通用對象編輯器對話框 圖2.14 選擇轉換器 圖2.14所示對話框中,第一個選項是ArffLoader,選擇該選項并成功的可能性很小,因為默認就是使用它來加載數(shù)據(jù)集,沒有成功才會彈出加載數(shù)據(jù)失敗的提示對話框。第二個選項是C45Loader,C4.5格式的數(shù)據(jù)集由兩個文件共同構成,一個文件(.names)提供字段名,另一個文件(.data)提供實際數(shù)據(jù)。第三個選項是默認的CSVLoader,這是一種以逗號分隔各屬性的文件格式,前文已經(jīng)介紹了這種數(shù)據(jù)轉換器。第四個選項DatabaseLoader是從數(shù)據(jù)庫,而不是文件中讀取數(shù)據(jù)集。然而,使用第1章介紹的SQLViewer工具來訪問數(shù)據(jù)庫,是更為人性化且方便的方案。SerializedInstancesLoader選項用于重新加載以前作為Java序列化對象保存的數(shù)據(jù)集。任何Java對象都可以采用這種格式予以保存并重新加載。由于序列化對象本身就是Java格式,使用它可能比加載ARFF文件的速度更快,這是因為加載ARFF文件時必須對其進行分析和檢查,從而花費更多的時間。如果需要多次加載大數(shù)據(jù)集,則很值得以這種數(shù)據(jù)格式進行保存。 值得一提的是TextDirectoryLoader加載器,它的功能是導入一個目錄,目錄中包含若干以文本挖掘為目的的純文本文件。導入目錄應該有特定的結構——一組子目錄,每個子目錄包含一個或多個擴展名為.txt的文本文件,每個文本文件都會成為數(shù)據(jù)集中的一個實例,其中,一個字符串型屬性保存該文件的內(nèi)容,一個標稱型的類別屬性保存文件所在的子目錄名稱。該數(shù)據(jù)集可以通過使用StringToWordVector過濾器進一步加工為詞典,為后面的文本挖掘做準備。
你還可能感興趣
我要評論
|