我們提供了兩組資料集(data set)來讓你使用在決策樹(decision tree)演算法上。
其中一個資料集是與蘑菇有關,而另一個則是與太陽閃焰有關。在蘑菇的資料集中,
你的目標是根據蘑菇的各種性質來建立一個決策樹來決定蘑菇是否能食用。在太陽閃焰
的資料集中,你的目標則是建立一個決策樹來決定在未來的 24 小時當中,某個區域
是否會發生太陽閃焰。
輸入格式
這兩個資料集使用的都是同一種輸入格式。
在輸入當中,第一行由一個整數所組成,而該整數代表的是資料集當中有多少例子。
在第一行之後的每一行都代表一個例子,由下列格式所組成:
[attributes] [label]
性質(attributes)由一個字串所構成,而字串當中的每一個字元都代表著一種特性。
每一個蘑菇擁有 22 種不同性質,而每一塊太陽區域則有 10 種不同性質。標籤(label)
則是由一個字元所構成,標籤和性質中間被一個空白(whitespace)所分隔。而標籤及
各種不同性質的意義會在下面說明。
輸出格式
請把你所建成的決策樹模型以 C 語言當中的函式形式輸出出來。你所輸出的函式需要
遵循以下的名字:
char predict(char *attr);
在這函式當中,唯一的參數會是一個與輸入格式相同的性質字串。(在蘑菇當中有 22 種
性質,在太陽區域當中則有 10 種性質)
這個函數會回傳它對這筆輸入所預測的標籤。(在蘑菇當中會回傳 'e' 或 'p',在太陽
閃焰當中會回傳 '0' 或 '1')
請把你所輸出的檔案命名成 'hw5_2_pred.h'。你可以編譯並執行課程網上所提供的
'predictor.cpp' 來檢查你的決策樹是否良好。(請見課程網上的 Makefile)
要當心在輸出的 C 程式碼當中的分號(;)與撇號(')。
對於蘑菇的資料集,一個簡單的輸出範例如下:
char predict(char *attr) {
if(attr[0]=='b') {
return 'e';
} else {
if(attr[2]=='r') {
return 'p';
} else {
return 'e';
}
}
}
以下實在太繁複了,省略之。