Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.30 KB | None | 0 0
  1. import numpy as np
  2. from sklearn.metrics import accuracy_score
  3. from sklearn.metrics import confusion_matrix
  4.  
  5.  
  6. y_true = ['A']*100 + ['B']*100 + ['C']*100
  7. y_pred = ['A']*30 + ['B']*50 + ['C']*20 + ['A']*20 + ['B']*60 + ['C']*20 + ['A']*10 + ['B']*10 + ['C']*80
  8.  
  9. accuracy_score(y_true, y_pred)
  10.  
  11. bw@xps13 ~ $ def one_class_accuracy(actual, pred):
  12. ............     class_count = len(set(actual))
  13. ............     cm = confusion_matrix(actual, pred)
  14. ............     cm_total = cm
  15. ............
  16. ............     TP_sum, FP_sum, TN_sum, FN_sum = 0, 0, 0, 0
  17. ............     ACC_sum, SEN_sum, SPE_sum, ERR_sum = 0, 0, 0, 0
  18. ............     for c in range(class_count):
  19. ............         TP, FP, TN, FN = 0, 0, 0, 0
  20. ............         for i in range(class_count):
  21. ............             for j in range(class_count):
  22. ............                 if i == c and j == c:
  23. ............                     TP += cm_total[i, j]
  24. ............                 elif i == c and j != c:
  25. ............                     FN += cm_total[i, j]
  26. ............                 elif i != c and j == c:
  27. ............                     FP += cm_total[i, j]
  28. ............                 else:
  29. ............                     TN += cm_total[i, j]
  30. ............                     # print(cm_total[i, j])
  31. ............         TP_sum += TP
  32. ............         FP_sum += FP
  33. ............         TN_sum += TN
  34. ............         FN_sum += FN
  35. ............
  36. ............         ACC = (TP + TN) / (TP + TN + FP + FN) * 100
  37. ............         SEN = TP / (TP + FN) * 100
  38. ............         SPE = TN / (TN + FP) * 100
  39. ............         ACC_sum += ACC
  40. ............         SEN_sum += SEN
  41. ............         SPE_sum += SPE
  42. ............
  43. ............     ACC_sum /= class_count
  44. ............     SEN_sum /= class_count
  45. ............     SPE_sum /= class_count
  46. ............
  47. ............     results = {
  48. ............         'TP': int(TP_sum),
  49. ............         'TN': int(TN_sum),
  50. ............         'FP': int(FP_sum),
  51. ............         'FN': int(FN_sum),
  52. ............         'ACC': float(ACC_sum),
  53. ............         'SEN': float(SEN_sum),
  54. ............         'SPE': float(SPE_sum),
  55. ............         'CM': cm_total,
  56. ............     }
  57. ............     return results['ACC']
  58.  
  59. one_class_accuracy(y_true, y_pred)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement