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
Czy to możliwe, aby dać ogólną ocenę F takich danych przy zastosowaniu średnich? –
@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