在WEKA中,待預測的目標(輸出)被稱作Class屬性,這應該是來自分類任務的“類”。一般的,若Class屬性是分類型時我們的任務才叫分類,Class屬性是數值型時我們的任務叫回歸。
這裏介紹用C4.5決策樹算法對數據建立起分類模型,C4.5算法可以處理數值型的屬性。
首先選擇數據源,然後切換到“Classify”選項卡,點擊“Choose”按鈕後可以看到很多分類或者回歸的算法分門別類在一個樹型框裏。 樹型框下方有一個“Filter...”按鈕,點擊可以根據數據集的特性過濾掉不合適的算法。選擇“trees”下的“J48”,這就是需要的C4.5算法。
參數介紹:
binarySplits 是否使用二進制分裂名詞性屬性;默認False
confidenceFactor 用於修剪的置信因子(小於該值導致修剪);默認0.25
debug 設置爲true,則分類器可能在控制檯輸出另外的信息;默認False
minNumObj 每個葉的最小實例數量;默認2
numFolds 決定用於reduced-error(減少-誤差)修剪的數據量;一折用於修剪,另外的用於建樹;默認3
reducedErrorPruning 是否使用減少-誤差修剪,而不是C4.5修剪;默認:False
saveInstanceData 是否爲了展示保存訓練數據;默認:False
seed 減少-誤差修剪時,用於隨機化數據的種子;默認:1
subtreeRaising 修剪樹的時候是否考慮子樹上升操作;默認:True
unpruned 修剪是否需要;默認:False
useLaplace 是否葉節點基於拉普拉斯平滑;默認:False
修剪的方式:存在C.4.5修剪,和減少-誤差修剪;reducedErrorPruning控制,默認是C.4.5修剪;
是否修剪:unpruned控制,默認是修剪;
如果沒有專門設置檢驗數據集,爲了保證生成的模型的準確性而不至於出現過擬合(overfitting)的現象,有必要採用交叉驗證(一般選擇10-fold cross validation)來選擇和評估模型。
右鍵點擊“Results list”中項,彈出菜單中選擇“Visualize tree”,新窗口裏可以看到圖形模式的決策樹。建議把這個新窗口最大化,然後點右鍵,選“Fit
to screen”,可以把這個樹看清楚些。
解釋一下“Confusion Matrix”的含義:
=== Confusion Matrix ===
a b <-- classified as
741 24 | a = YES
10 582 | b = NO
這個矩陣是說,原本“pep”是“YES”的實例,有741個被正確的預測爲 “YES”,有24個錯誤的預測成了“NO”;原本“pep”是“NO”的實例,有10個被錯誤的預測爲“YES”,有582個正確的預測成了“NO”。 741+24+10+582 = 1375是實例總數,而(741+582)/1375 = 0.96218正好是正確分類的實例所佔比例。
我們要用生成的模型對那些待預測的數據集進行預測了,注意待預測數據集和訓練用數據集各個屬性的設 置必須是一致的。WEKA中並沒有直接提供把模型應用到帶預測數據集上的方法,我們要採取間接的辦法。
在“Test Opion”中選擇“Supplied test set”,並且“Set”成要驗證的文件,“Start”一次。
右鍵點擊“Result list”中剛產生的那一項,選擇“Visualize classifier errors”。點“Save”按鈕,將結果保存。這個ARFF文件中就有我們需要的預測結果。在“Explorer”的“Preprocess”選項卡中打開這個新文件,可以看到多了兩個屬性 “Instance_number”和“predictedpep”。“Instance_number”是指一個實例在原文件中的位置,“predictedpep”就是模型預測的結果。點“Edit”按鈕或者在“ArffViewer”模塊中打開可以查
看這個數據集的內容。