2014-06-22 20 views
8

R caret kütüphanesinde, aşağıdaki gibi bir karışıklık matrisi varsa, 0.992 genel doğruluğunu geri kazanmanın bir yolu var mı? Bu değeri saklayamam ve daha sonra işlemek için kullanmam gerektiğinden bu tek değeri alamıyorum. Bu hiç mümkün mü?R'de confusionMatrix'ten genel doğruluk değeri nasıl geri alınır?

Prediction A B C D E 
      A 1114 2 0 0 0 
      B 9 745 5 0 0 
      C 0 6 674 4 0 
      D 0 0 3 640 0 
      E 0 0 2 1 718 

Genel İstatistikler

  Accuracy : 0.992   
       95% CI : (0.989, 0.994) 
No Information Rate : 0.286   
P-Value [Acc > NIR] : <2e-16   

       Kappa : 0.99   

McNemar Testi P-Değeri:

     Class: A Class: B Class: C Class: D Class: E 
Sensitivity    0.992 0.989 0.985 0.992 1.000 
Specificity    0.999 0.996 0.997 0.999 0.999 
Pos Pred Value   0.998 0.982 0.985 0.995 0.996 
Neg Pred Value   0.997 0.997 0.997 0.998 1.000 
Prevalence    0.286 0.192 0.174 0.164 0.183 
Detection Rate   0.284 0.190 0.172 0.163 0.183 
Detection Prevalence 0.284 0.193 0.174 0.164 0.184 
Balanced Accuracy  0.996 0.992 0.991 0.996 1.000 

cevap

16

bir karışıklık matrisi cm, genel doğruluk elde edilir Verilen: Sınıf tarafından NA

İstatistik overall.accuracy <- cm$overall['Accuracy']

caret paketini ilk defa gördüğümde, bunu nasıl öğrendim?

Örnek vermediğiniz için, bir example code for caret confusion matrices numaralı telefonu aradım. İşte (son açıklamada sadece eklenen atama) 'dir: görebileceğiniz gibi

> str(cm) 
List of 5 
$ positive: NULL 
$ table : 'table' int [1:3, 1:3] 13 18 19 20 13 17 17 19 14 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ Prediction: chr [1:3] "setosa" "versicolor" "virginica" 
    .. ..$ Reference : chr [1:3] "setosa" "versicolor" "virginica" 
$ overall : Named num [1:7] 0.267 -0.1 0.198 0.345 0.333 ... 
    ..- attr(*, "names")= chr [1:7] "Accuracy" "Kappa" "AccuracyLower" "AccuracyUpper" ... 
$ byClass : num [1:3, 1:8] 0.26 0.26 0.28 0.63 0.63 0.64 0.26 0.26 0.28 0.63 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : chr [1:3] "Class: setosa" "Class: versicolor" "Class: virginica" 
    .. ..$ : chr [1:8] "Sensitivity" "Specificity" "Pos Pred Value" "Neg Pred Value" ... 
$ dots : list() 
- attr(*, "class")= chr "confusionMatrix" 

, cm nesne geçerli:

################### 
## 3 class example 

confusionMatrix(iris$Species, sample(iris$Species)) 

newPrior <- c(.05, .8, .15) 
names(newPrior) <- levels(iris$Species) 

cm <- confusionMatrix(iris$Species, sample(iris$Species)) 

Şimdi, karışıklık matris içinde ne bir göz atalım liste. Çeşitli "byClass" ve "genel" istatistikleri görüyoruz. Bize dize endeksleri ile sayılar bir vektör verir

overall <- cm$overall 

: genel kısım elde edilir Şimdi

> overall 
     Accuracy   Kappa AccuracyLower AccuracyUpper AccuracyNull AccuracyPValue McnemarPValue 
    0.2666667  -0.1000000  0.1978421  0.3449492  0.3333333  0.9674672  0.9547790 

, ilgili değer ayıklanması kadar basittir olarak:

> overall.accuracy <- overall['Accuracy'] 

Özet: str arkadaşınız. Başka bir kullanışlı işlev attributes - belirli bir nesnenin tüm niteliklerini döndürür.

+0

Güzel yanıt ancak doğruluk bir dize ve bir değer döndürür, nasıl değere yalnızca erişebilirim? Duble demek istedim – Emixam23