ML.NET 模型生成器生成的代码返回多个预测结果

问题描述 投票:0回答:2

我在模型生成器中选择了文本分类,并且能够使用示例数据评估模型。我在 Visual Studio 插件中获得了多个具有百分比准确度的结果行,如下所示:

结果

结果1 60%


结果2 5%

结果3 <1%

结果4 <1%

结果5 <1%

但是,当使用生成的模型代码时,我只能使用

获得一个预测结果

var predictionResult = ConsumeModel.Predict(input);

问题:如何使用生成的模型针对一个模型输入返回多个具有百分比准确度的预测结果?类似于模型构建器在 Visual Studio 插件的评估步骤中的显示方式。

ml.net ml.net-model-builder
2个回答
0
投票

最简单的方法是根据 Score 返回的内容并将其与数据集文件夹中的标签名称相匹配。然后使用比较来重新排列收到的结果的顺序。

例如下面的动物数据集:

(图片) 将分数转换为标签名称

PredictedLabel: Cat
Score: [0.003, 0.981, 0.01, 0.0025, 0.003, 0.0015]
------------Similar
Bird: 0.003
Cat: 0.981
Dog: 0.01
Mouse: 0.0025
Snake: 0.003
Tiger: 0.0015

可以将其放入二维数组中并排序。最后,你得到如下结果。

Cat: 0.981
Dog: 0.01
Bird: 0.003
Snake: 0.003
Mouse: 0.0025
Tiger: 0.0015

你可以参考下面的二维数组排序代码,它会对Score进行排序并保留你的LabelName。

int j = 1;

        Array.Sort(array, delegate (object[] x, object[] y)
        {
            return (y[j] as IComparable).CompareTo(x[j]);
        });

现在,您可以使用循环来检索结果并按照您想要的方式呈现它们。


0
投票

使用

ConsumeModel.PredictAllLabels(input);
,返回
IOrderedEnumerable<KeyValuePair<string, float>>

© www.soinside.com 2019 - 2024. All rights reserved.