Вычисление точности, отзыва и FScore по результатам матрицы путаницы в R

У меня есть следующая матрица путаницы, теперь мне нужно рассчитать из нее точность, отзыв и FScore, как мне это сделать, используя полученные значения? Матрица путаницы и статистика

      Reference
Prediction One Zero
      One   37   43
      Zero  19  131

               Accuracy : 0.7304          
                 95% CI : (0.6682, 0.7866)
    No Information Rate : 0.7565          
    P-Value [Acc > NIR] : 0.841087        

                  Kappa : 0.3611          
 Mcnemar's Test P-Value : 0.003489        

            Sensitivity : 0.6607          
            Specificity : 0.7529          
         Pos Pred Value : 0.4625          
         Neg Pred Value : 0.8733          
             Prevalence : 0.2435          
         Detection Rate : 0.1609          
   Detection Prevalence : 0.3478          
      Balanced Accuracy : 0.7068          

       'Positive' Class : One

Я использовал следующий отредактированный код после предложений других пользователей.

library(class)
library(e1071)
library(caret)
library(party)
library(nnet)
library(forecast)
pimad <- read.csv("C:/Users/USER/Desktop/AMAN/pimad.csv")
nrow(pimad)  
set.seed(9850)
gp<-runif(nrow(pimad))
pimad<-pimad[order(gp),]
idx <- createDataPartition(y = pimad$class, p = 0.7, list = FALSE)
train<-pimad[idx,]
test<-pimad[-idx,]
svmmodel<-svm(class~.,train,kernel="radial")
psvm<-predict(svmmodel,test)
table(psvm,test$class)
library(sos)
findFn("confusion matrix precision recall FScore")
df<-(confusionMatrix(test$class, psvm))
dim(df)
df[1,2]/sum(df[1,2:3])
df

person amankedia    schedule 07.11.2015    source источник
comment
Это должно помочь: en.wikipedia.org/wiki/Confusion_matrix   -  person RHertel    schedule 07.11.2015
comment
@ Паскаль, что это делает?   -  person amankedia    schedule 07.11.2015
comment
Он ищет функцию, которая может рассчитать то, что вы ищете. Что-то нужно сделать, прежде чем спрашивать здесь.   -  person    schedule 08.11.2015


Ответы (2)


Вам больше ничего не нужно делать, у вас есть все запрошенные меры в df. Просто введите:

ls(df) [1] "byClass" "точки" "режим" "общий" "положительный" "таблица"

df$byClass # Это еще один пример, над которым я работал

Теперь в таблице отображаются все параметры, включая чувствительность, специфичность, положительное пред-значение, отрицательное пред-значение, точность, полноту, F1, распространенность, частоту обнаружения, распространенность обнаружения и сбалансированную точность.

person r. ahmadi    schedule 30.11.2016

Ну, это просто вычисление подмножества матрицы.

Если ваша матрица путаницы называется df, используйте формулы здесь и здесь:

df
  Prediction One Zero
1        One  37   43
2       Zero  19  131

# Precision: tp/(tp+fp):
df[1,1]/sum(df[1,1:2])
[1] 0.4625

# Recall: tp/(tp + fn):
df[1,1]/sum(df[1:2,1])
[1] 0.6607143

# F-Score: 2 * precision * recall /(precision + recall):
2 * 0.4625 * 0.6607143 / (0.4625 + 0.6607143)
[1] 0.5441177
person DatamineR    schedule 07.11.2015
comment
я изменил код на df‹-(confusionMatrix(test$class, psvm)) df[1,2]/sum(df[1,2:3]), но генерируется следующая ошибка: Ошибка в df[1, 2 ] : неправильное количество измерений - person amankedia; 07.11.2015
comment
Как выглядит ваш df? Что говорит dim(df)? - person DatamineR; 07.11.2015
comment
dim(df) возвращает NULL - person amankedia; 07.11.2015
comment
Вы должны каким-то образом сохранить свою матрицу как df. - person DatamineR; 07.11.2015
comment
Я разместил код, не могли бы вы просмотреть его и рассказать мне о том, как сохранить матрицу путаницы в виде фрейма данных. - person amankedia; 07.11.2015
comment
Сделайте следующее: df <- confusionMatrix(df)$table - person DatamineR; 07.11.2015
comment
генерируется следующая ошибка: Ошибка в sort.list(y): «x» должен быть атомарным для «sort.list». Вы вызвали «сортировку» в списке? - person amankedia; 07.11.2015
comment
Спасибо, но я использовал другой метод, чтобы сделать это. - person amankedia; 07.11.2015