df <- read.csv("https://raw.githubusercontent.com/mkivenson/Business-Analytics-Data-Mining/master/Classification%20Metrics/classification-output-data.csv")
datatable(df)
cm <- as.matrix.data.frame(table(df$scored.class, df$class))
rownames(cm) <- c('predicted negative', 'predicted positive')
colnames(cm) <- c('actual negative', 'actual positive')
cm
## actual negative actual positive
## predicted negative 119 30
## predicted positive 5 27
\(Precision = \frac{TP}{TP + FP}\)
get_precision <- function(actual, predicted){
cm <- as.matrix.data.frame(table(predicted, actual))
TN <- cm[1,1]
FN <- cm[1,2]
FP <- cm[2,1]
TP <- cm[2,2]
return (TP / (TP + FP))
}
get_precision(df$class, df$scored.class)
## [1] 0.84375
\(Sensitivity = \frac{TP}{TP + FN}\)
get_sensitivity <- function(actual, predicted){
cm <- as.matrix.data.frame(table(predicted, actual))
TN <- cm[1,1]
FN <- cm[1,2]
FP <- cm[2,1]
TP <- cm[2,2]
return (TP / (TP + FN))
}
get_sensitivity(df$class, df$scored.class)
## [1] 0.4736842