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