iT邦幫忙

DAY 22
0

科學運算和資料處理的潛力新秀--Julia語言系列 第 22

julia (22) -- random forest classification

上一篇完成了資料的整理。今天就來試一下用random forest來做預測。

在julia(17)這篇文章我們也是用這個演算法來做字母辨識,之前的code幾乎可以拿過來用。但還是需要稍微調整一下。

首先是轉換資料的型態。Decision Tree這個package並沒有完全支援DataFrame,所以我們必須要把DataFrame和DataArray這兩個型別轉回julia的基本Array型別。作法也很簡單,只要用array()就可以了:

xTrain=newdata      # newdata 是已經整理好的資料
yTrain=df[:Survived] # 生還結果df[:Survived]是training label

#把資料轉為一般的Array

xTrain=array(xTrain)
yTrain=array(yTrain)

使用random forest包含了兩個步驟,第一步是用build_forest()以及training data建立模型

model = build_forest(yTrain, xTrain, 5, 20, 1.0)

接下來用apply_forest()來預測test data的結果:

predTest = apply_forest(model, xTest)

因為目前我們還沒有test data,所以我們要直接用cross validation來看這個模型的預測結果。DecisionTree package提供了一個可以直接結合random forest和cross validation的函式nfoldCV_forest()

accuracy = nfoldCV_forest(yTrain, xTrain, 5, 20, 4, 0.7)

得到的結果如下。

Fold 1
Classes:  {0,1}
Matrix:   
[125 12
 23 62]
Accuracy: 0.8423423423423423
Kappa:    0.6579804560260585

Fold 2
Classes:  {0,1}
Matrix:   
[134 11
 26 51]
Accuracy: 0.8333333333333334
Kappa:    0.6145471609572971

Fold 3
Classes:  {0,1}
Matrix:   
[121 19
 26 56]
Accuracy: 0.7972972972972973
Kappa:    0.5570630486831604

Fold 4
Classes:  {0,1}
Matrix:   
[110 15
 26 71]
Accuracy: 0.8153153153153153
Kappa:    0.6198312588756161

Mean Accuracy: 0.822072072072072

結果並不差,大約都在80%上下。下一步就是把test data set也做一樣的資料處理,然後就上傳到kaggle的server上評分。

更新的ijulia notebook請按這裡


上一篇
julia (21) -- 用julia玩kaggle之繼續整理資料
下一篇
julia (23) -- 深入解析DataFrame,順道一提parametric type
系列文
科學運算和資料處理的潛力新秀--Julia語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言