Weka是來之新西蘭懷卡托大學(xué)的一款開源軟件,主要是數(shù)據(jù)挖掘方面的一些算法的集合。這款軟件大概是當(dāng)前數(shù)據(jù)挖掘領(lǐng)域最好的開源軟件了.
由Java開發(fā)的 Weka (Waikato Environment for Knowledge Analysis) 是一個(gè)知名機(jī)器學(xué)機(jī)軟件,其支持幾種經(jīng)典的數(shù)據(jù)挖掘任務(wù),顯著的數(shù)據(jù)預(yù)處理,集群,分類,回歸,虛擬化,以及功能選擇。其技術(shù)基于假設(shè)數(shù)據(jù)是以一種單個(gè)文件或關(guān)聯(lián)的,在那里,每個(gè)數(shù)據(jù)點(diǎn)都被許多屬性標(biāo)注。 Weka 使用Java的數(shù)據(jù)庫鏈接能力可以訪問SQL數(shù)據(jù)庫,并可以處理一個(gè)數(shù)據(jù)庫的查詢結(jié)果。它主要的用戶接品是Explorer,也同樣支持相同功能的命令行,或是一種基于組件的知識流接口。
Weka實(shí)在是一個(gè)偉大的工具;趈ava,卻沒有運(yùn)行其它java程序那種慢吞吞的感覺。前天我還在說Data Mining is excruciating but interesting,有了Weka,Data Mining也可以輕輕松松了!
數(shù)據(jù)挖掘的過程:
1.讀入訓(xùn)練、測試樣本
2.初始化分類器
3.使用訓(xùn)練樣本訓(xùn)練分類器
4.使用測試樣本測試分類器的學(xué)習(xí)效果
5.打印分類結(jié)果
WEKA啟動:
數(shù)據(jù)挖掘絕非大公司的專有,也不是多昂貴的軟件。實(shí)際上,有一種軟件可以實(shí)現(xiàn)那些價(jià)格不菲的軟件所能實(shí)現(xiàn)的全部功能 — 這個(gè)軟件就是 WEKA(參見 參考資料)。WEKA 誕生于 University of Waikato(新西蘭)并在 1997 年首次以其現(xiàn)代的格式實(shí)現(xiàn)。它使用了 GNU General Public License (GPL)。該軟件以 Java™ 語言編寫并包含了一個(gè) GUI 來與數(shù)據(jù)文件交互并生成可視結(jié)果(比如表和曲線)。它還有一個(gè)通用 API,所以您可以像嵌入其他的庫一樣將 WEKA 嵌入到您自己的應(yīng)用程序以完成諸如服務(wù)器端自動數(shù)據(jù)挖掘這樣的任務(wù)。
我們繼續(xù)并安裝 WEKA。因?yàn)樗?Java,所以如果您在計(jì)算機(jī)上沒有安裝 JRE,那么請下載一個(gè)包含 JRE 的 WEKA 版本。
圖 1. WEKA 的開始屏
在啟動 WEKA 時(shí),會彈出 GUI 選擇器,讓您選擇使用 WEKA 和數(shù)據(jù)的四種方式。對于本文章系列中的例子,我們只選擇了 Explorer 選項(xiàng)。對于我們要在這些系列文章中所需實(shí)現(xiàn)的功能,這已經(jīng)足夠。
圖 2. WEKA Explorer
在熟悉了如何安裝和啟動 WEKA 后,讓我們來看看我們的第一個(gè)數(shù)據(jù)挖掘技術(shù):回歸。
Weka怎么用?
Weka是基于java,用于數(shù)據(jù)挖掘和知識分析一個(gè)平臺。來自世界各地的java愛好者們都可以把自己的算法放在這個(gè)平臺上,然后從海量數(shù)據(jù)中發(fā)掘其背后隱藏的種種關(guān)系;也許你只是出于對數(shù)據(jù)的狂熱愛好,但也許你的發(fā)現(xiàn)會蘊(yùn)含著無限的商機(jī)。
打開Weka,首先出現(xiàn)一個(gè)命令行窗口。原以為要在這個(gè)命令行下寫java語句呢,不過稍等一秒,Weka GUI Chooser的出現(xiàn)了。這是一個(gè)很簡單的窗體,提供四個(gè)按鈕:Simple CLI、Explorer、Experimenter、KnowledgeFlow。Simple CLI應(yīng)該是一個(gè)使用命令行的界面,有點(diǎn)像SAS的編輯器;Explorer是則是視窗模式下的數(shù)據(jù)挖掘工具;Experimenter和 KnowledgeFlow的使用有待進(jìn)一步摸索....
先打開Weka Exlporer感受一下它的強(qiáng)大吧。它有六個(gè)標(biāo)簽頁,分別是Preprocess、Classify、Cluster、Associate、 Select attributes、Visualize。在Preprocess中Open一個(gè)數(shù)據(jù)文件(Weka使用的數(shù)據(jù)文件是.arff,其實(shí)是一個(gè)文本數(shù)據(jù)集,格式并不復(fù)雜,用notepad打開一看就明白了)。當(dāng)然也可以O(shè)pen URL或Open DB,不過我沒有check一下支持哪些DB。
打開數(shù)據(jù)文件后,可以使用Filter進(jìn)行一下過濾,相當(dāng)于“預(yù)處理的預(yù)處理”。Filter提供了許多算法來過濾數(shù)據(jù),比如 filters/unsupervised/instance/normalize應(yīng)該是一個(gè)標(biāo)準(zhǔn)化的算法。當(dāng)然,也可以編寫你自己的算法!
這時(shí)窗體上已經(jīng)給出這個(gè)數(shù)據(jù)集的一些基本特征了,比如有多少屬性,各屬性的一些簡單統(tǒng)計(jì)量,右下方還給出一些可視化效果比如柱狀圖。通過這些可以初步了解這個(gè)數(shù)據(jù)集了。但這些都是很直觀的可以看出來,好戲在后頭,隱藏的關(guān)系即將登場。
接下來的兩個(gè)標(biāo)簽頁是classify(分類)和cluster(聚類),接觸數(shù)據(jù)挖掘的人對它們一定不會陌生。同樣Weka有許多分類和聚類算法可供選擇,在這里面稱為clasifier和clusterer。不過Weka提供的classify功能似乎還不夠靈活,只能定長度和定頻率地分類。但這個(gè)關(guān)系不大,現(xiàn)在很多數(shù)據(jù)處理軟件都可以做到這個(gè),比如excel。Cluster功能強(qiáng)大,提供了許多巧妙的聚類算法,選定一個(gè)算法,給出你所需要生成的聚類數(shù)目,就可以自動完成。當(dāng)然如果能不給出聚類數(shù)目也能自動聚類的話就更佳了,不過我還沒發(fā)現(xiàn)怎么做。
Next,終于到偉大的Associate了! 這是一個(gè)用于發(fā)掘Associate Rules(關(guān)聯(lián)規(guī)則)的模塊。對商學(xué)略有涉獵的人一定熟知沃爾瑪發(fā)現(xiàn)了啤酒和尿布銷售的關(guān)系這一佳話。有了Weka Associate,任何一家超市都可以做到這一點(diǎn)了。將前面導(dǎo)入的數(shù)據(jù)使用Associator進(jìn)行發(fā)掘,就可以發(fā)現(xiàn)其中無數(shù)隱藏的關(guān)系。Weka-3 -4提供了Apriori、PredictiveApriori、Tertius三種關(guān)聯(lián)規(guī)則發(fā)掘算法,不過我感覺這已經(jīng)夠用了。選定一個(gè)算法,進(jìn)行一些必要的設(shè)置,包括支持度上界、下界,每次運(yùn)算的支持度遞減值,等等。另外一個(gè)重要的參數(shù):所需要生成的關(guān)聯(lián)規(guī)則個(gè)數(shù)。太不可思議了,以前我們能從海量數(shù)據(jù)中發(fā)現(xiàn)一個(gè)關(guān)聯(lián)規(guī)則就已經(jīng)沾沾自喜,現(xiàn)在Weka居然問你想生成多少關(guān)聯(lián)規(guī)則!
參數(shù)設(shè)置完成,點(diǎn)Start,就可以去喝茶了。不一會,10條關(guān)聯(lián)規(guī)則已經(jīng)生成,可以提交給老板了。當(dāng)然,你還可以分析一下哪些規(guī)則比較有用,哪一條有潛在收益,這就需要business sense了。
另外兩個(gè)標(biāo)簽頁還沒怎么看。Select attributes大概是針對單屬性的分析?Visualize則提供了許多可視化效果,需要拿出去演示時(shí)很方便。不過今天使用感覺這個(gè)模塊的功能有點(diǎn)問題,沒太搞懂。也有可能是我用錯(cuò)了。
將數(shù)據(jù)載入 WEKA
數(shù)據(jù)創(chuàng)建完成后,就可以開始創(chuàng)建我們的回歸模型了。啟動 WEKA,然后選擇 Explorer。將會出現(xiàn) Explorer 屏幕,其中 Preprocess 選項(xiàng)卡被選中。選擇 Open File 按鈕并選擇在上一節(jié)中創(chuàng)建的 ARFF 文件。在選擇了文件后,WEKA Explorer 應(yīng)該類似于圖 3 中所示的這個(gè)屏幕快照。
圖 3. 房屋數(shù)據(jù)加載后的 WEKA
在這個(gè)視圖中,WEKA 允許您查閱正在處理的數(shù)據(jù)。在 Explorer 窗口的左邊,給出了您數(shù)據(jù)的所有列(Attributes)以及所提供的數(shù)據(jù)行的數(shù)量(Instances)。若選擇一列,Explorer 窗口的右側(cè)就會顯示數(shù)據(jù)集內(nèi)該列數(shù)據(jù)的信息。比如,通過選擇左側(cè)的 houseSize 列(它應(yīng)該默認(rèn)選中),屏幕右側(cè)就會變成顯示有關(guān)該列的統(tǒng)計(jì)信息。它顯示了數(shù)據(jù)集內(nèi)此列的最大值為 4,032 平方英尺,最小值為 2,200 平方英尺。平均大小為 3,131 平方英尺,標(biāo)準(zhǔn)偏差為 655 平方英尺(標(biāo)準(zhǔn)偏差是一個(gè)描述差異的統(tǒng)計(jì)量度)。此外,還有一種可視的手段來查看數(shù)據(jù),單擊Visualize All 按鈕即可。由于在這個(gè)數(shù)據(jù)集內(nèi)的行數(shù)有限,因此可視化的功能顯得沒有有更多數(shù)據(jù)點(diǎn)(比如,有數(shù)百個(gè))時(shí)那么功能強(qiáng)大。
好了,對數(shù)據(jù)的介紹已經(jīng)夠多了。讓我們立即創(chuàng)建一個(gè)模型來獲得我房子的價(jià)格。