我在使用ML.Net进行文本解释的分类器。预测结果有一个float[]类型的分数列和一个预测的标签。这种方法有效,因为最高分对应于预测的标签,但其他分数只是没有特定顺序的浮点数。我如何知道哪个分数对应哪个标签?我如何查看第二高权重的标签是什么?
例如,我得到这样的结果:0.000050090.008930760.12747630.62097870.2425644
0.6是我的预测标签,但我还需要查看0.24对应的标签,以便了解它为什么会混淆。
标签是诸如“问候”或“笑话”这样的文本字符串,这些在管道中被字典化了,所以这可能是它们没有按正确顺序排列的原因?
在ML.Net中,有没有办法将两者联系起来?展示哪个分数对应哪个标签?
回答:
您可以使用以下代码获取与分数对应的标签:
string[] scoreLabels;model.TryGetScoreLabelNames(out scoreLabels);
请注意,这可能会随着即将推出的ML.NET 0.6 API而改变。这些API将直接暴露Schema
,并启用获取此信息(以及其他有用信息)。这可能类似于今天的TryGetScoreLabelNames
的工作方式。