Download Data

df <- read.csv("https://raw.githubusercontent.com/mkivenson/Business-Analytics-Data-Mining/master/Classification%20Metrics/classification-output-data.csv")
datatable(df)

Confusion Matrix

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

Question 5 - Precision

\(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

Question 6 - Sensitivity (Recall)

\(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