1. weka簡單介紹
1) weka是新西蘭懷卡托大學WEKA小組用JAVA開發的機器學習/數據挖掘開源軟件。
2) 相關資源鏈接
http://sourceforge.net/projects/weka/files/
http://www.cs.waikato.ac.nz/ml/weka/
3) 主要特點
- 集數據預處理、學習算法(分類、回歸、聚類、關聯分析)和評估方法等為一體的綜合性數據挖掘工具
- 具有交互式可視化界面
- 提供算法學習比較環境
- 通過其接口。可實現自己的數據挖掘算法
2. 數據集(.arff文件)
數據集的呈現形式如上圖所看到的,其表現為一個二維表,當中:
- 表格里一行稱作一個實例(Instance),相當於統計學中的一個樣本,或者數據庫中的一條記錄
- 表格里一列稱作一個屬性(Attribute)。相當於統計學中的一個變量,或者數據庫中的一個字段
數據集的存儲格式如上圖所看到的。是一種ASCII文本文件,整個ARFF文件能夠分為兩個部分:
- 第一部分給出了頭信息(Headinformation)。包含了對關系的聲明和對屬性的聲明
- 第二部分給出了數據信息(Datainformation)。即數據集中給出的數據。從”@data”標記開始。后面即為數據信息
注:當中凝視部分以”%”開始。凝視部分weka將忽略這些行;
假設關系名。屬性名,數據的字符串包括空格,它必須加上引號;
最后一個聲明的屬性被稱作class屬性,在分類或回歸任務中它是默認的目標變量。
3. 數據類型
1)Weka支持四種數據類型,分別為:
- numeric 數值型
數值型能夠是整數(integer)或者實數(real),weka將它們都當作實數看待。
- nominal 標稱型
標稱屬性由一系列的類別名稱放在花括號里。
- string 字符串型
字符串屬性能夠包括隨意的文本。
- date日期和時間型
日期和時間屬性統一用”date”類型表示,默認的字符串是ISO-8601所給的日期時間組合格式:“yyyy-MM-dd HH:mm:ss”
eg. @ATTRIBUTE timestamp DATE“yyyy-MM-dd HH:mm:ss”
@DATA “2015-06-23 20:05:40”
2)稀疏數據
當數據集中含有大量的0值時。用稀疏格式的數據存儲更加省空間。
稀疏格式是針對數據信息中某個對象的表示而言。不須要改動ARFF文件的其他部分。比如:
@data @data
0, X, 0, Y,“class A” {1 X, 3 Y, 4“class A”}
0, 0, W, 0,“class B” {2 W, 4 “classB”}
4. 數據准備
.xls -> .csv -> .arff
5. 分類 Classify
1) 分類過程
依據一個WEKA實例的一組特征屬性(輸入變量),對目標屬性進行分類預測。為了實現這一目的,我們須要有一個訓練數據集。這個數據集中每一個實例的輸入和輸出都是已知的。觀察訓練集中的實例,能夠建立預測的分類/回歸模型。有了這個模型,就能夠對新的未知實例進行分類預測。衡量模型的好壞主要在於預測的准確程度。
2) 數據預測的樣例
a. 注意測試數據集和訓練數據集的各個屬性聲明部分的設置必須是一致的。即使在測試數據集中沒有class屬性的值,也須要加入這個屬性,能夠將該屬性在各個實例上的值均設置為缺失值。
b. 打開“Simple CLI”模塊。使用“J48”算法的命令格式為:
java weka.classifiers.trees.J48 -C0.25 -M 2 -t "C:\\Users\\Administrator\\Desktop\\課題\\數據文件\\測試數據\\2.3參考文獻--相關性分析+數據變換.csv.arff"-d"C:\\Users\\Administrator\\Desktop\\課題\\數據文件\\測試數據\\2.3參考文獻--相關性分析+數據變換.model"
這里的” 2.3參考文獻--相關性分析+數據變換.csv.arff”是訓練數據集。當中參數“-C 0.25”表示置信因子,“-M 2”表示最小實例數。
“-t”后面為訓練數據集的完整路徑,“-d”后面為保存模型的完整路徑。
c. 把這個模型應用到測試數據集的命令格式為:
java weka.classifiers.trees.J48 -p 11 -l"C:\\Users\\Administrator\\Desktop\\課題\\數據文件\\測試數據\\2.3參考文獻--相關性分析+數據變換.model"-T "C:\\Users\\Administrator\\Desktop\\課題\\數據文件\\測試數據\\3.3學位論文中提取的參考文獻.csv.arff"
當中“-p 11”指模型中的待預測屬性的真實值存在第11個屬性中,“-l”后面為模型的完整路徑。“-T”后面為測試數據集的完整路徑。
d. 輸入上述命令后。出現的結果:
===Predictions on test data ===
inst# actual predicted error prediction ()
1 1:? 1:J 1
2 1:? 1:J 1
3 1:?
2:M 0.667
4 1:?
2:M 0.667
5 1:? 3:C 1
6 1:? 2:M 0.667
第一列為實例編號。第二列為測試數據集中原來class屬性的值,第三列是預測后的結果,第四列為預測結果的置信度,比如對於實例1,有百分之百的把握說它的值為J.