簡介
Weka 是一個由Java編寫的開源免費的數據挖掘工具,全稱懷卡托智能分析環境(Waikato Environment for Knowledge Analysis),它是基於JAVA環境下開源的機器學習(machine learning)以及數據挖掘(data mining)的軟件,運行該工具需要安裝Java環境。
Weka同時提供了命令行和GUI兩種使用方式方式,前者效率更高,后者使用更簡單。
軟件安裝
1. 下載並安裝Java環境
參見教程:http://www.runoob.com/java/java-environment-setup.html
2.安裝Weka
Windows上下載.exe安裝后直接雙擊運行安裝
官方網址:https://www.cs.waikato.ac.nz/ml/weka/
數據集介紹
在Weka中,一個數據集由 weka.core.Instances 實現。數據集中每個樣例是由weka.core.Instance實現。每個樣例由多個屬性組成,其中簡單的屬性類型見表1。
屬性類型 | 描述 | 樣例 |
列表型(nominal) | 一組值得預定義列表 | {1,2,3}, {good, bad} |
數值型(numeric) | 一個實數或者整數 | 12, 2.3, 50 |
字符串(string) | 一個任意長的字符序列,包含在雙引號內 | "better", "worse" |
除了簡單屬性,Weka還有附加類型的屬性date和relational,將會在之后介紹。
Weka的數據集存儲在ARFF格式的文件中,下面是一個ARFF文件的格式說明:
% This is a toy example, the UCI weather dataset. % Any relation to real weather is purely coincidental. @relation golfWeatherMichigan_1988/02/10_14days @attribute outlook {sunny, overcast, rainy} @attribute windy {TRUE, FALSE} @attribute temperature real @attribute humidity real @attribute play {yes, no} @data sunny,FALSE,85,85,no sunny,TRUE,80,90,no overcast,FALSE,83,86,yes rainy,FALSE,70,96,yes rainy,FALSE,68,80,yes
以%開頭的兩行是注釋,主要介紹該數據集的來源,內容和意義等;
@relation 是該數據集的關系名稱;
@attribute 是該數據集每個實例的屬性說明,上例中共有5個屬性,其中3個列表型屬性,2個數值型屬性,沒有字符串型屬性;
@data 下面行就是數據集內容,每行代表一個實例,每個實例由5個之前定義過的屬性。
在Weka中,默認將每個樣例的最后一個屬性認為是類別/標記 屬性,在上例中,類別屬性是play,通過前4個屬性來判斷play是yes或者no。當然也可以通過參數 -c 來自己指定類別屬性。Weka中屬性的索引從1開始編號,例如,-c 1 將指定第一個屬性即outlook為類別屬性。
通過 weka.core.Instances 類可以統計 ARFF數據集的一些基本信息,命令行參數為:
java weka.core.Instances weather.arff
結果如下:
可以看到該數據集的名稱,樣例數目,屬性數目,每個屬性的類型,有誤屬性丟失等統計信息。
weka.core提供了一些別的有用的程序,如converters.C45Loader 和 converters.CSVLoader 能夠分別導入C45數據集和CSV格式的數據集並將其轉換為ARFF格式,命令如下:
java weka.core.converters.CSVLoader data.csv > data.arff java weka.core.converters.C45Loader c45_filestem > data.arff
未完待續...