• 功能介绍
    • Precision
    • Recall
    • F-Measure
    • Sensitivity
    • Accuracy
    • Specificity
    • Kappa
    • Logloss
  • 参数说明
  • 脚本示例
    • 脚本代码

    功能介绍

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

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

    给出整体的评估指标包括Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。

    Precision

    多分类评估(stream) - 图1

    Recall

    多分类评估(stream) - 图2

    F-Measure

    多分类评估(stream) - 图3

    Sensitivity

    多分类评估(stream) - 图4

    Accuracy

    多分类评估(stream) - 图5

    Specificity

    多分类评估(stream) - 图6

    Kappa

    多分类评估(stream) - 图7
    多分类评估(stream) - 图8
    多分类评估(stream) - 图9

    Logloss

    多分类评估(stream) - 图10

    参数说明

    名称 中文名称 描述 类型 是否必须? 默认值
    timeInterval 时间间隔 流式数据统计的时间间隔 Integer 3
    labelCol 标签列名 输入表中的标签列名 String
    predictionCol 预测结果列名 预测结果列名 String
    predictionDetailCol 预测详细信息列名 预测详细信息列名 String

    脚本示例

    脚本代码

    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 = EvalMultiClassBatchOp().setLabelCol("label").setPredictionDetailCol("detailInput").linkFrom(inOp).collectMetrics()
    12. print("Prefix0 accuracy:", metrics.getAccuracy("prefix0"))
    13. print("Prefix1 recall:", metrics.getRecall("prefix1"))
    14. print("Macro Precision:", metrics.getMacroPrecision())
    15. print("Micro Recall:", metrics.getMicroRecall())
    16. print("Weighted Sensitivity:", metrics.getWeightedSensitivity())
    17. inOp = StreamOperator.fromDataframe(df, schemaStr='label string, detailInput string')
    18. EvalMultiClassStreamOp().setLabelCol("label").setPredictionDetailCol("detailInput").setTimeInterval(1).linkFrom(inOp).print()
    19. StreamOperator.execute()