功能介绍
二分类评估是对二分类算法的预测结果进行效果评估。
支持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曲线下面的面积
提升曲线
横坐标:
纵坐标:TP
Precision
Recall
F-Measure
Sensitivity
Accuracy
Specificity
Kappa
Logloss
参数说明
名称 | 中文名称 | 描述 | 类型 | 是否必须? | 默认值 | |
---|---|---|---|---|---|---|
positiveLabelValueString | 正样本 | 正样本对应的字符串格式。 | String | null | ||
timeInterval | 时间间隔 | 流式数据统计的时间间隔 | Integer | 3 | ||
labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | ||
predictionCol | 预测结果列名 | 预测结果列名 | String | ✓ | ||
predictionDetailCol | 预测详细信息列名 | 预测详细信息列名 | String |
脚本示例
脚本代码
import numpy as np
import pandas as pd
data = np.array([
["prefix1", "{\"prefix1\": 0.9, \"prefix0\": 0.1}"],
["prefix1", "{\"prefix1\": 0.8, \"prefix0\": 0.2}"],
["prefix1", "{\"prefix1\": 0.7, \"prefix0\": 0.3}"],
["prefix0", "{\"prefix1\": 0.75, \"prefix0\": 0.25}"],
["prefix0", "{\"prefix1\": 0.6, \"prefix0\": 0.4}"]])
df = pd.DataFrame({"label": data[:, 0], "detailInput": data[:, 1]})
inOp = BatchOperator.fromDataframe(df, schemaStr='label string, detailInput string')
metrics = EvalBinaryClassBatchOp().setLabelCol("label").setPredictionDetailCol("detailInput").linkFrom(inOp).collectMetrics()
print("AUC:", metrics.getAuc())
print("KS:", metrics.getKs())
print("PRC:", metrics.getPrc())
print("Accuracy:", metrics.getAccuracy())
print("Macro Precision:", metrics.getMacroPrecision())
print("Micro Recall:", metrics.getMicroRecall())
print("Weighted Sensitivity:", metrics.getWeightedSensitivity())
inOp = StreamOperator.fromDataframe(df, schemaStr='label string, detailInput string')
EvalBinaryClassStreamOp().setLabelCol("label").setPredictionDetailCol("detailInput").setTimeInterval(1).linkFrom(inOp).print()
StreamOperator.execute()