Hoe goed is je model?

Supervised Learning met scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Classificatiemetrieken

  • Modelprestatie meten met accuratesse:

    • Aandeel correct geclassificeerde voorbeelden

    • Niet altijd een bruikbare metriek

Supervised Learning met scikit-learn

Klasse-ongelijkheid

  • Classificatie om frauduleuze banktransacties te voorspellen

    • 99% van de transacties is legitiem; 1% is frauduleus
  • Je kunt een classifier bouwen die GEEN enkele transactie als frauduleus voorspelt

    • 99% accuraat!

    • Maar slecht in het echt vinden van fraude

    • Mislukt in het oorspronkelijke doel

  • Klasse-ongelijkheid: ongelijke frequentie van klassen

  • We hebben een andere manier nodig om prestaties te beoordelen

Supervised Learning met scikit-learn

Confusion matrix voor classificatieprestaties

  • Confusion matrix

confusion_matrix.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

predicted_labels.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

actual_labels.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

confusion_matrix.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

true_positive.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

true_negative.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

false_negative.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

 

false_positive.png

Supervised Learning met scikit-learn

Classificatieprestaties beoordelen

confusion_matrix.png

  • Accuratesse:

ch3_1_v3.030.png

Supervised Learning met scikit-learn

Precisie

precision.png

  • Precisie

precision_formula.png

  • Hoge precisie = lagere false-positive rate
  • Hoge precisie: Weinig legitieme transacties voorspeld als frauduleus
Supervised Learning met scikit-learn

Recall

recall.png

  • Recall

recall_formula.png

  • Hoge recall = lagere false-negative rate
  • Hoge recall: Meeste frauduleuze transacties correct voorspeld
Supervised Learning met scikit-learn

F1-score

  • F1-score: $2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
Supervised Learning met scikit-learn

Confusion matrix in scikit-learn

from sklearn.metrics import classification_report, confusion_matrix

knn = KNeighborsClassifier(n_neighbors=7)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
Supervised Learning met scikit-learn

Confusion matrix in scikit-learn

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
Supervised Learning met scikit-learn

Classificatierapport in scikit-learn

print(classification_report(y_test, y_pred))
              precision    recall  f1-score   support

           0       0.86      0.99      0.92      1117
           1       0.76      0.16      0.26       217

    accuracy                           0.85      1334
   macro avg       0.81      0.57      0.59      1334
weighted avg       0.84      0.85      0.81      1334
Supervised Learning met scikit-learn

Laten we oefenen!

Supervised Learning met scikit-learn

Preparing Video For Download...