2017-03-07 69 views
0

我是R中的統計和數據分析的新手 今天我在R中嘗試樸素貝葉斯算法 我面臨的問題是我無法理解預測。 該代碼後面是這樣的:R的樸素貝葉斯算法的輸出說明

install.packages('ElemStatLearn')
library('ElemStatLearn')

library("klaR") library("caret")

sub = sample(nrow(spam), floor(nrow(spam) * 0.9)) 

train = spam[sub,]

test = spam[-sub,]

xTrain = train[,-58] 

yTrain = train$spam

xTest = test[,-58] 

yTest = test$spam

model = train(xTrain,yTrain,'nb',trControl=trainControl(method='cv',number=10)) 
prop.table(table(predict(model$finalModel,xTest)$class,yTest))` 

結果顯示這裏是如下:

yTest 
      email  spam 
    email 0.33405640 0.02603037 
    spam 0.24945770 0.39045553 

可以參考此鏈接查看http://joshwalters.com/2012/11/27/naive-bayes-classification-in-r.html

回答

0

這不是樸素貝葉斯模型的輸出。

一旦你使用預測,你並不真正「關心」模型,因爲你已經獲得了預測。

table.prop創建每個組合的比例爲整個人口。您可能需要考慮查看沒有比例部分的表格,以查看實際數字

例如,33.4%將被檢測爲電子郵件,實際上是一封電子郵件,而2.6%將被檢測爲電子郵件,而他們是其實是垃圾郵

+0

好吧,明白了,樸素貝葉斯模型輸出存儲在模型數據框中。但那麼kappa的含義和準確性是什麼。 @Shahar Bental – Tappy

+0

你可以分享kappa的代碼和輸出以及準確性嗎? 精度被很好地定義, https://en.wikipedia.org/wiki/Accuracy_and_precision Cohen的κ是「歸一化」的精度的一種形式: https://en.wikipedia.org/wiki/Cohen's_kappa –

+0

上面寫的是我的代碼,而樸素貝葉斯 4140個樣本 57預測 2類:「郵件」,「垃圾郵件」 沒有預先處理 重採樣:交叉驗證(10倍) 摘要樣本量:3726 3726,3727,3727,3725,3725,... 跨調諧參數的重採樣結果: usekernel準確度Kappa FALSE 0.7126367 0.4581488 TRUE 0.5599037 0.2290060 – Tappy

0

您顯示的結果稱爲「混淆矩陣」。它用於驗證分類器的工作情況。

您需要了解這裏的幾個方面: - 真陽性(TP),假陽性(FP),真陰性(TN),假陰性(FN)

比較:

enter image description here

與你的情況

enter image description here

從左上到右下的斜線給出正確預測的百分比年齡,另外兩個值表示分類器得到「困惑」的百分比年齡

希望這給出了一個初步的想法。 谷歌混淆矩陣,你可以找到更多。 一個很好的鏈接在這裏:https://classeval.wordpress.com/introduction/basic-evaluation-measures/

+0

非常感謝你:) – Tappy