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