多标签分类评估 (EvalMultiLabelBatchOp)
Java 类名:com.alibaba.alink.operator.batch.evaluation.EvalMultiLabelBatchOp
Python 类名:EvalMultiLabelBatchOp
功能介绍
多label分类评估是对多label分类算法的预测结果进行效果评估,支持下列评估指标。
f1
参数说明
名称 |
中文名称 |
描述 |
类型 |
是否必须? |
默认值 |
labelCol |
标签列名 |
输入表中的标签列名 |
String |
✓ |
|
predictionCol |
预测结果列名 |
预测结果列名 |
String |
✓ |
|
labelRankingInfo |
Object列列名 |
Object列列名 |
String |
"object" |
|
predictionRankingInfo |
Object列列名 |
Object列列名 |
String |
"object" |
代码示例
Python 代码
from pyalink.alink import * import pandas as pd useLocalEnv(1) df = pd.DataFrame([ ["{"object":"[0.0, 1.0]"}", "{"object":"[0.0, 2.0]"}"], ["{"object":"[0.0, 2.0]"}", "{"object":"[0.0, 1.0]"}"], ["{"object":"[]"}", "{"object":"[0.0]"}"], ["{"object":"[2.0]"}", "{"object":"[2.0]"}"], ["{"object":"[2.0, 0.0]"}", "{"object":"[2.0, 0.0]"}"], ["{"object":"[0.0, 1.0, 2.0]"}", "{"object":"[0.0, 1.0]"}"], ["{"object":"[1.0]"}", "{"object":"[1.0, 2.0]"}"] ]) source = BatchOperator.fromDataframe(df, "pred string, label string") evalMultiLabelBatchOp: EvalMultiLabelBatchOp = EvalMultiLabelBatchOp().setLabelCol("label").setPredictionCol("pred").linkFrom(source) metrics = evalMultiLabelBatchOp.collectMetrics() print(metrics)
Java 代码
import org.apache.flink.types.Row; import com.alibaba.alink.operator.batch.BatchOperator; import com.alibaba.alink.operator.batch.evaluation.EvalMultiLabelBatchOp; import com.alibaba.alink.operator.batch.source.MemSourceBatchOp; import com.alibaba.alink.operator.common.evaluation.MultiLabelMetrics; import org.junit.Test; import java.util.Arrays; import java.util.List; public class EvalMultiLabelBatchOpTest { @Test public void testEvalMultiLabelBatchOp() throws Exception { List <Row> df = Arrays.asList( Row.of("{"object":"[0.0, 1.0]"}", "{"object":"[0.0, 2.0]"}"), Row.of("{"object":"[0.0, 2.0]"}", "{"object":"[0.0, 1.0]"}"), Row.of("{"object":"[]"}", "{"object":"[0.0]"}"), Row.of("{"object":"[2.0]"}", "{"object":"[2.0]"}"), Row.of("{"object":"[2.0, 0.0]"}", "{"object":"[2.0, 0.0]"}"), Row.of("{"object":"[0.0, 1.0, 2.0]"}", "{"object":"[0.0, 1.0]"}"), Row.of("{"object":"[1.0]"}", "{"object":"[1.0, 2.0]"}") ); BatchOperator <?> source = new MemSourceBatchOp(df, "pred string, label string"); EvalMultiLabelBatchOp evalMultiLabelBatchOp = new EvalMultiLabelBatchOp().setLabelCol("label").setPredictionCol( "pred").linkFrom(source); MultiLabelMetrics metrics = evalMultiLabelBatchOp.collectMetrics(); System.out.println(metrics.toString()); } }
-------------------------------- Metrics: -------------------------------- microPrecision:0.7273 microF1:0.6957 subsetAccuracy:0.2857 precision:0.6667 recall:0.6429 accuracy:0.5476 f1:0.6381 microRecall:0.6667 hammingLoss:0.3333