2015-11-07 3 views
1

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

 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 
+0

Это должно help: https://en.wikipedia.org/wiki/Confusion_matr ix – RHertel

+0

'install.packages (sos); библиотека (СОС); findFn («ошибка интерпретации точности пересчета FScore») ' –

+0

@Pascal, что это делает? – amankedia

ответ

0

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

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

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 
+0

Я изменил код на df <- (confusionMatrix (test $ class, psvm)) df [1,2]/sum (df [1,2: 3]) , но возникает следующая ошибка: Ошибка в df [ 1, 2]: неправильное количество измерений – amankedia

+0

Как выглядит ваш 'df'? Что говорит 'dim (df)'? – DatamineR

+0

dim (df) возвращается NULL – amankedia

1

Ничего другого вам нужно сделать, у вас есть все требуемые меры в ФР. Просто введите:

Ls (ДФ) [1] "byClass" "точки" "режим" "в целом" "позитивный" "стол"

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

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