[英]Why does naiveBayes return all NA's for multiclass classification in R?
開始寫這個問題,然后想出答案。 要把它放在這里作為后代,因為很難找到答案。
我正在嘗試使用e1071包中的naiveBayes分類器。 它似乎可以毫無困難地為新數據生成預測 ,但實際上我需要對新數據類的概率估計。
例:
> model <- naiveBayes(formula=as.factor(V11)~., data=table, laplace=3)
> predict(model, table[,1:10])
[1] 4 4 4 4 4 4 4 4 1 1 1 3 3 1 1
> predict(model, table[,1:10], type="raw")
1 2 3 4
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA NA NA
[14,] NA NA NA NA
[15,] NA NA NA NA
這對我來說似乎很荒謬,因為模型能夠輸出預測的事實意味着它必須具有類的概率估計。 是什么導致了這種奇怪的行為?
我已經嘗試過一些沒有成功的事情:
產生此錯誤的一些數據的示例:
table[1:5,]
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 0 0 0.000000 0.0000000 0.000000 0.0000000 0.6711444 0.7110409 0.0000000
2 0 0 0.000000 0.0000000 -1.345804 2.1978370 0.6711444 0.7110409 0.0000000
3 0 0 1.923538 -3.6718725 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
4 0 0 1.923538 -0.4079858 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
5 0 0 0.000000 0.0000000 -1.345804 0.2930449 0.6711444 0.7110409 0.0000000
V10 V11
1 0.0000000 6
2 0.0000000 3
3 -3.1316213 2
4 -0.2170431 5
5 0.0000000 4
發生這種情況是因為數據集中的一個類只有一個實例。
我的應用程序的一個簡單的解決方法是克隆該記錄並添加少量噪聲,之后預測按預期工作。
編輯:實際上似乎並不總是需要添加噪音。 這是一個非常簡單的示例,通過簡單地添加表中每行的額外副本來解析問題中發布的數據集:
> table <- as.data.frame(rbind(as.matrix(table),as.matrix(table))
> nms <- colnames(table)
> model <- naiveBayes(table[,1:length(nms)-1], factor(table[,length(nms)]))
> predict(model, table[,1:(length(nms)-1)], type='raw')
2 3 4 5 6
[1,] 2.480502e-34 6.283185e-12 6.283185e-12 2.480502e-34 1.000000e+00
[2,] 1.558542e-45 9.999975e-01 2.506622e-06 1.558542e-45 6.283170e-12
[3,] 1.000000e+00 1.558545e-45 1.558545e-45 6.283185e-12 2.480502e-34
[4,] 6.283185e-12 1.558545e-45 1.558545e-45 1.000000e+00 2.480502e-34
[5,] 1.558542e-45 2.506622e-06 9.999975e-01 1.558542e-45 6.283170e-12
[6,] 2.480502e-34 6.283185e-12 6.283185e-12 2.480502e-34 1.000000e+00
[7,] 1.558542e-45 9.999975e-01 2.506622e-06 1.558542e-45 6.283170e-12
[8,] 1.000000e+00 1.558545e-45 1.558545e-45 6.283185e-12 2.480502e-34
[9,] 6.283185e-12 1.558545e-45 1.558545e-45 1.000000e+00 2.480502e-34
[10,] 1.558542e-45 2.506622e-06 9.999975e-01 1.558542e-45 6.283170e-12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.