功能介绍

二分类评估是对二分类算法的预测结果进行效果评估。

支持Roc曲线,LiftChart曲线,Recall-Precision曲线绘制。

流式的实验支持累计统计和窗口统计。

给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。

Roc曲线

横坐标:FPR

纵坐标:TPR

AUC

Roc曲线下面的面积

Recall-Precision曲线

横坐标:Recall

纵坐标:Precision

PRC

Recall-Precision曲线下面的面积

提升曲线

横坐标:

二分类评估(batch) - 图1

纵坐标:TP

Precision

二分类评估(batch) - 图2

Recall

二分类评估(batch) - 图3

F-Measure

二分类评估(batch) - 图4

Sensitivity

二分类评估(batch) - 图5

Accuracy

二分类评估(batch) - 图6

Specificity

二分类评估(batch) - 图7

Kappa

二分类评估(batch) - 图8
二分类评估(batch) - 图9
二分类评估(batch) - 图10

Logloss

二分类评估(batch) - 图11

参数说明

名称 中文名称 描述 类型 是否必须? 默认值
labelCol 标签列名 输入表中的标签列名 String
predictionDetailCol 预测详细信息列名 预测详细信息列名 String
positiveLabelValueString 正样本 正样本对应的字符串格式。 String null

脚本示例

脚本代码

  1. import numpy as np
  2. import pandas as pd
  3. data = np.array([
  4. ["prefix1", "{\"prefix1\": 0.9, \"prefix0\": 0.1}"],
  5. ["prefix1", "{\"prefix1\": 0.8, \"prefix0\": 0.2}"],
  6. ["prefix1", "{\"prefix1\": 0.7, \"prefix0\": 0.3}"],
  7. ["prefix0", "{\"prefix1\": 0.75, \"prefix0\": 0.25}"],
  8. ["prefix0", "{\"prefix1\": 0.6, \"prefix0\": 0.4}"]])
  9. df = pd.DataFrame({"label": data[:, 0], "detailInput": data[:, 1]})
  10. inOp = BatchOperator.fromDataframe(df, schemaStr='label string, detailInput string')
  11. metrics = EvalBinaryClassBatchOp().setLabelCol("label").setPredictionDetailCol("detailInput").linkFrom(inOp).collectMetrics()
  12. print("AUC:", metrics.getAuc())
  13. print("KS:", metrics.getKs())
  14. print("PRC:", metrics.getPrc())
  15. print("Accuracy:", metrics.getAccuracy())
  16. print("Macro Precision:", metrics.getMacroPrecision())
  17. print("Micro Recall:", metrics.getMicroRecall())
  18. print("Weighted Sensitivity:", metrics.getWeightedSensitivity())

脚本运行结果

  1. AUC: 0.8333333333333333
  2. KS: 0.6666666666666666
  3. PRC: 0.9027777777777777
  4. Accuracy: 0.6
  5. Macro Precision: 0.3
  6. Micro Recall: 0.6
  7. Weighted Sensitivity: 0.6