WEKA是由新西蘭懷卡托大學(xué)開發(fā)的開源項目。WEKA是由JAVA編寫的,并且限制在GNU通用公眾證書的條件下發(fā)布,可以運(yùn)行在所有的操作系統(tǒng)中。WEKA工作平臺包含能處理所有標(biāo)準(zhǔn)數(shù)據(jù)挖掘問題的方法:回歸、分類、聚類、關(guān)聯(lián)規(guī)則挖掘以及屬性選擇。作為數(shù)據(jù)挖掘愛好者自然要對WEKA的源代碼進(jìn)行分析并以及改進(jìn),努力寫出自己的數(shù)據(jù)挖掘算法。
下面著重介紹一下如何利用WEKA編寫新的數(shù)據(jù)挖掘算法:
注意:WEKA的版本有兩個版本:穩(wěn)定版(STABLE)和開發(fā)版(DEVELOP),不同WEKA版本與不同JDK的版本匹配,穩(wěn)定版WEKA3-4的與JDK1.4.2匹配,而開發(fā)版WEKA3-5與JDK1.5匹配,WEKA3-5新加入了對數(shù)據(jù)庫的數(shù)據(jù)連接。穩(wěn)定版直接下載weka-src.jar文件就行了,而開發(fā)版需使用CVS連接到sourceForge下載,:pserver:cvs_anon@cvs.scms.:/usr/local/global-cvs/ml_cvs。本文以穩(wěn)定版為例。
一、首先從WEKA官方網(wǎng)站(
http://www.cs./ml/weka)下載WEKA程序包。將程序包解壓獲得weka-src.jar源文件,再將源代碼解壓縮導(dǎo)入某個JAVA開發(fā)工具中(圖1),如:JBuilder,Eclipse,Netbeans等。我現(xiàn)在以Netbeans為例。
圖1 : weka導(dǎo)入Netbeans
二、為了不與WEKA中已包含的算法相沖突,最好自己建立一個JAVA包,將自己編寫的挖掘算法存放在該包內(nèi)(圖2)。我以建立hzm包為例:
圖2 : 建立新weka包
三、在新的包hzm內(nèi)建立新的java類,然后雙擊編寫數(shù)據(jù)挖掘算法程序代碼,本人以實現(xiàn)ID3算法為例講解具體操作過程。
再將weka.classifiers.trees下的id3算法復(fù)制到新建的ID3類中(這只是演示,當(dāng)然最好還是自己寫新的挖掘算法),修改一下類中提示的錯誤,保存就行了。
四、編寫好新的挖掘算法并不能馬上在weka中exlorer模式中看到,還要修改weka.gui包中的GenericObjectEditor.props文件。如:我剛才建立的ID3類在weka.classifiers.hzm包中,就要在GenericObjectEditor.props中的# Lists the Classifiers I want to choose from段后添加weka.classifiers.hzm.ID3,\
五、就可以編譯整個weka項目,在選擇主類時選擇weka.gui.GUIChooser這個類,就可以運(yùn)行和調(diào)試你編寫好的算法了,祝大家都能寫出優(yōu)秀的挖掘算法!
注意:穩(wěn)定版3-4修改GenericObjectEditor.props文件即可,但開發(fā)版3-5還要多修改同目錄下的GenericProertiesCreator.props文件。