2014-06-22 10 views
8

Trong thư viện R caret, nếu tôi có ma trận nhầm lẫn như dưới đây, nếu có cách nào để lấy lại độ chính xác tổng thể 0,992? Tôi không thể lấy giá trị này ra, vì tôi cần lưu trữ giá trị này và sử dụng nó để xử lý sau. cái này nó có hoàn toàn có thể xảy ra được không?Làm thế nào để lấy lại giá trị độ chính xác tổng thể từ sự nhầm lẫnMatrix trong 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 

Nhìn chung kê

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

       Kappa : 0.99   

Mcnemar của Kiểm tra P-Value: NA

kê bởi Class:

     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 

Trả lời

16

Cho một ma trận nhầm lẫn cm, tính chính xác tổng thể thu được bằng cách overall.accuracy <- cm$overall['Accuracy']

Đây là lần đầu tiên tôi nhìn thấy gói caret, vậy làm sao tôi biết điều này?

Vì bạn không cung cấp ví dụ, tôi đã tìm kiếm example code for caret confusion matrices. Dưới đây là (tôi chỉ bổ sung nhiệm vụ trong báo cáo cuối cùng):

################### 
## 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)) 

Bây giờ, chúng ta hãy nhìn những gì trong ma trận nhầm lẫn:

> 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" 

Như bạn có thể thấy, các đối tượng cm là một danh sách. Chúng tôi thấy các thống kê "byClass" và "tổng thể" khác nhau. Phần tổng thể thu được bằng cách:

overall <- cm$overall 

nào cho chúng ta một vector số với chỉ số chuỗi:

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

Bây giờ, chiết xuất giá trị liên quan cũng đơn giản như:

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

Tóm tắt: str là bạn của bạn. Hàm hữu dụng khác là attributes - nó trả về tất cả các thuộc tính của một đối tượng đã cho.

+0

Câu trả lời hay nhưng độ chính xác trả lại chuỗi và giá trị, làm cách nào tôi có thể truy cập giá trị? Ý tôi là đôi – Emixam23

Các vấn đề liên quan