2016-04-10 34 views
0

我做了一些分類模型,其中1表示它是同一個人,而0表示它們不同。Ensambling分類模型

如果打印我的預測的頭看起來方式如下:

> head(PredictCTree) 
[1] 0 0 0 0 0 0 
Levels: 0 1 
> head(PredictSVM) 
    1 1.1 1.2 1.3 1.7 1.14 
    0 0 0 0 0 0 
Levels: 0 1 
> head(PredictForest) 
    1.212 1.839 1.906 1.951 1.1011 1.1151 
     1  1  1  0  1  1 
Levels: 0 1 

所以,如果我想取它們的平均值,並把它們加起來我必須讓他們的數字,但這裏是我奮力: 示例:

> PredictForest[1] 
1.212 
    1 
Levels: 0 1 

基本上我要添加1 + 0(對於PredictForest和SVM)

as.numeric(PredictForest[1]) 
[1] 2 

但我最終得到這樣的回答:

> as.numeric(PredictForest[1]) + as.numeric(fitted.results[1] + as.numeric(PredictCTree[1])) 
[1] 4 

有什麼建議?

我的預期輸出是:

> as.numeric(PredictForest[1]) + as.numeric(fitted.results[1] + as.numeric(PredictCTree[1])) 
    [1] 1 

所以後來,我可以分割或以測試並獲得最可能的種類給予權重。

謝謝!

回答

2

如果您嘗試將因子轉換爲數字,它會給出因子中級別的號碼。要轉換成數字,您可以首先運行as.character,這將安全地將其轉換爲可以運行as.numeric的格式。

test <- as.factor(c(0, 1)) 
as.numeric(test) 
# [1] 1 2 
as.numeric(as.character(test)) 
# [1] 0 1 

R FAQ建議速度

7.10如何轉換因子數值不同的做法?

可能會發生這樣的情況,即在將數值數據讀入R(通常在讀取文件時)時,它們會作爲因子出現。如果f是這樣一個因子對象,則可以使用

as.numeric(as.character(f)) 來獲取數字。更有效,但難以記住,是

as.numeric(levels(f))[as.integer(f)] 在任何情況下,不要直接調用as.numeric()或他們喜歡在手頭的任務(如as.numeric()unclass()給予內部代碼)。

+0

謝謝,現在我明白了! –