模型表现如何?

使用 scikit-learn 的监督学习

George Boorman

Core Curriculum Manager, DataCamp

分类指标

  • 使用准确率衡量模型性能:

    • 正确分类样本的比例

    • 并非总是有用的指标

使用 scikit-learn 的监督学习

类别不平衡

  • 用分类预测银行欺诈交易

    • 99% 的交易为正常;1% 为欺诈
  • 可构建始终预测为"非欺诈"的分类器

    • 准确率 99%!

    • 但几乎无法识别欺诈交易

    • 偏离最初目的

  • 类别不平衡:各类样本数量不均

  • 需要换一种评估方式

使用 scikit-learn 的监督学习

用混淆矩阵评估分类性能

  • 混淆矩阵

混淆矩阵

使用 scikit-learn 的监督学习

评估分类性能

 

预测标签

使用 scikit-learn 的监督学习

评估分类性能

 

真实标签

使用 scikit-learn 的监督学习

评估分类性能

 

混淆矩阵

使用 scikit-learn 的监督学习

评估分类性能

 

真正类

使用 scikit-learn 的监督学习

评估分类性能

 

真负类

使用 scikit-learn 的监督学习

评估分类性能

 

假负类

使用 scikit-learn 的监督学习

评估分类性能

 

假正类

使用 scikit-learn 的监督学习

评估分类性能

混淆矩阵

  • 准确率:

ch3_1_v3.030.png

使用 scikit-learn 的监督学习

精准率(Precision)

精准率

  • 精准率

precision_formula.png

  • 高精准率 = 更低的假正率
  • 高精准率:很少将正常交易预测为欺诈
使用 scikit-learn 的监督学习

召回率(Recall)

召回率

  • 召回率

recall_formula.png

  • 高召回率 = 更低的假负率
  • 高召回率:能找出大多数欺诈交易
使用 scikit-learn 的监督学习

F1 分数

  • F1 分数:$2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
使用 scikit-learn 的监督学习

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)
使用 scikit-learn 的监督学习

scikit-learn 中的混淆矩阵

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
使用 scikit-learn 的监督学习

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
使用 scikit-learn 的监督学习

Passons à la pratique !

使用 scikit-learn 的监督学习

Preparing Video For Download...