2015-10-12 34 views
8

Jak obliczyć dokładność, precyzję i przypominania dla każdej klasy z modelu Bayesa naiwny? Używam wbudowanego zestawu danych: tęczówki i opakowania drzewo i pakiet e1071 dla Naive Bayes. Matryca zamieszanie jest jak poniżej:Dokładność, precyzja i przywołanie do multi-klasy modelu

prediction setosa versicolor virginica 
setosa   29   0   0 
versicolor  0   20   2 
virginica  0   3  21 

PS: zauważ, że używam 75 wpisy jako zbioru uczącego i inne badania:

iris.train <- c(sample(1:150, 75)) # have selected 75 randomly 

Odpowiedz

13

całym tym odpowiedź, mat jest macierzą zamieszanie, które Cię opisać.

Można obliczyć i dokładność sklep z:

(accuracy <- sum(diag(mat))/sum(mat)) 
# [1] 0.9333333 

Precyzja dla każdej klasy (zakładając, że prognozy są w wierszach i prawdziwe wyniki są na kolumnach) można obliczyć z:

(precision <- diag(mat)/rowSums(mat)) 
#  setosa versicolor virginica 
# 1.0000000 0.9090909 0.8750000 

Jeśli chciał chwycić precyzji dla konkretnej klasy, można zrobić:

(precision.versicolor <- precision["versicolor"]) 
# versicolor 
# 0.9090909 

Przypomnijmy dla każdej klasy (znowu zakładając, że prognozy są w wierszach i prawdziwe wyniki są na kolumnach) można obliczyć z:

recall <- (diag(mat)/colSums(mat)) 
#  setosa versicolor virginica 
# 1.0000000 0.8695652 0.9130435 

Jeśli chciał przywołanie do konkretnej klasy, można zrobić coś takiego:

(recall.virginica <- recall["virginica"]) 
# virginica 
# 0.9130435 

Jeśli zamiast tego miał prawdziwych efektów jak wiersze i przewidywanych efektów jak kolumny, wtedy można przerzucić precyzję i przywołać definicje.

danych:

(mat = as.matrix(read.table(text=" setosa versicolor virginica 
setosa   29   0   0 
versicolor  0   20   2 
virginica  0   3  21", header=T))) 
#   setosa versicolor virginica 
# setosa   29   0   0 
# versicolor  0   20   2 
# virginica  0   3  21 
+1

Czy to możliwe, aby dać ogólną ocenę F takich danych przy zastosowaniu średnich? –

+1

@mlee_jordan Tak, możesz. Jednym z materiałów do dalszych badań jest podręcznik do nauki scikit: http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics. Jednak mogą istnieć lepsze, bardziej ogólne zasoby. W rzeczywistości, jeśli obliczysz wynik F w przypadku wieloklasowym, automatycznie obliczy on wynik na klasę i średnią. W innych przypadkach, takich jak wycofanie, masz możliwość obliczenia mikro średnich (policz wszystkie TP, FN, FP i oblicz wynik) lub średnich makr (oblicz wynik na klasę i średnią) podczas obliczania wyniku. – Cerno