Weka -- 數據格式基本介紹

Weka是什麼不多介紹,直接切入正題,簡單介紹Weka的數據格式。

Weka存儲數據的格式是ARFF(Attribute-Relation File Format)文件,是一種ASCII文本文件。如下例,weka自帶的weather.arff文件。

% ARFF file for the weather data with some numric features 

@relation weather 

@attribute outlook {sunny, overcast, rainy} 
@attribute temperature real 
@attribute humidity real 
@attribute windy {TRUE, FALSE} 
@attribute play {yes, no} 

@data 

% 4 instances 

sunny,85,85,FALSE,no 
sunny,80,90,TRUE,no 
overcast,83,86,FALSE,yes 
rainy,70,96,FALSE,yes 


weka數據以“%”開始的行是註釋,WEKA將忽略這些行。 
除去註釋後,整個ARFF文件可以分爲兩個部分。

第一部分給出了頭信息(Head information),包括了對關係的聲明和對屬性的聲明。

第二部分給出了數據信息(Data information),即數據集中給出的數據。從“@data”標記開始,後面的就是數據信息了。 

關係聲明 
關係名稱在ARFF文件的第一個有效行來定義,格式爲 
@relation <relation-name> 
<relation-name>是一個字符串。如果這個字符串包含空格,它必須加上引號(指英文標點的單引號或雙引號)。 

屬性聲明 
屬性聲明用一列以“@attribute”開頭的語句表示。數據集中的每一個屬性都有它對應的“@attribute”語句,來定義它的屬性名稱和數據類型。 
聲明語句的順序很重要:它表明了該項屬性在數據部分的位置;最後一個聲明的屬性被稱作class屬性,在分類或迴歸任務中,它是默認的目標變量。 
屬性聲明的格式爲 
@attribute <attribute-name> <datatype> 
其中<attribute-name>是必須以字母開頭的字符串。和關係名稱一樣,如果這個字符串包含空格,它必須加上引號。 

weka支持的<datatype>有四種,分別是 
numeric                                    數值型 
<nominal-specification>         分類(nominal)型 
string                                        字符串型 
date [<date-format>]              日期和時間型 
注意“integer”,“real”,“numeric”,“date”,“string”這些關鍵字是區分大小寫的,而“relation”“attribute ”和“date”則不區分。

數值屬性 
數值型屬性可以是整數或者實數,但weka把它們都當作實數看待。 

分類屬性 
分類屬性由<nominal-specification>列出一系列可能的類別名稱並放在花括號中:{<nominal-name1>, <nominal-name2>, <nominal-name3>, ...} 。數據集中該屬性的值只能是其中一種類別。 
例如如下的屬性聲明說明“outlook”屬性有三種類別:“sunny”,“ overcast”和“rainy”。而數據集中每個實例對應的“outlook”值必是這三者之一。 
@attribute outlook {sunny, overcast, rainy} 
如果類別名稱帶有空格,仍需要將之放入引號中。 

字符串屬性 
字符串屬性中可以包含任意的文本。這種類型的屬性在文本挖掘中非常有用。 
示例: 
@ATTRIBUTE LCC string 

日期和時間屬性 
日期和時間屬性統一用“date”類型表示,它的格式是 
@attribute <name> date [<date-format>] 
其中<name>是這個屬性的名稱,<date-format>是一個字符串,來規定該怎樣解析和顯示日期或時間的格式,默認的字符串是ISO-8601所給的日期時間組合格式“yyyy-MM-ddTHH:mm:ss”。 
數據信息部分表達日期的字符串必須符合聲明中規定的格式要求。

數據信息 
數據信息中“@data”標記獨佔一行,剩下的是各個實例的數據。 
每個實例佔一行。實例的各屬性值用逗號“,”隔開。如果某個屬性的值是缺失值(missing value),用問號“?”表示,且這個問號不能省略。例如: 
@data 
sunny,85,85,FALSE,no 
?,78,90,?,yes 

字符串屬性和分類屬性的值是區分大小寫的。若值中含有空格,必須被引號括起來。例如: 
@relation LCCvsLCSH 
    @attribute LCC string 
    @attribute LCSH string 
    @data 
    AG5, 'Encyclopedias and dictionaries.;Twentieth century.' 
    AS262, 'Science -- Soviet Union -- History.' 

日期屬性的值必須與屬性聲明中給定的相一致。例如: 
@RELATION Timestamps 
    @ATTRIBUTE timestamp DATE "yyyy-MM-dd HH:mm:ss" 
    @DATA 
    "2001-04-03 12:12:12" 
    "2001-05-03 12:59:55" 

稀疏數據 
有的時候數據集中含有大量的0值(比如購物籃分析),這個時候用稀疏格式的數據存貯更加省空間。 
稀疏格式是針對數據信息中某個實例的表示而言,不需要修改ARFF文件的其它部分。看如下的數據: 
@data 
    0, X, 0, Y, "class A" 
    0, 0, W, 0, "class B" 
用稀疏格式表達的話就是 
@data 
    {1 X, 3 Y, 4 "class A"} 
    {2 W, 4 "class B"} 
每個實例用花括號括起來。實例中每一個非0的屬性值用<index> <空格> <value>表示。<index>是屬性的序號,從0開始計;<value>是屬性值。屬性值之間仍用逗號隔開。 
注意在稀疏格式中沒有註明的屬性值不是缺失值,而是0值。若要表示缺失值必須顯式的用問號表示出來。 

發佈了43 篇原創文章 · 獲贊 13 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章