gpt4 book ai didi

c# - ML.Net 0.7 - 获取多类分类的分数和标签

转载 作者:太空狗 更新时间:2023-10-29 23:43:04 24 4
gpt4 key购买 nike

我使用的是 ML.NET 0.7,并且有一个具有以下结果类的 MulticlassClassification 模型:

public class TestClassOut
{
public string Id { get; set; }
public float[] Score { get; set; }
public string PredictedLabel { get; set; }
}

我想知道 Scores 上的分数和相应的标签属性(property)。感觉我应该能够使该属性成为 Tuple<string,float>或类似的方法来获取分数所代表的标签。

我了解到 V0.5 上有一个方法:

model.TryGetScoreLabelNames(out scoreLabels);

但似乎无法在 V0.7 中找到等效项。

这能做到吗?如果是怎么办?

最佳答案

这可能不是您正在寻找的答案,但我最终从 TryGetScoreLabelNames 复制了代码(自 0.7 起它位于旧命名空间中)并对其进行了调整以使用来 self 的输入数据的模式。下面的 dataView 是我根据预测输入数据创建的 IDataView,因此我可以从中获取架构。

public bool TryGetScoreLabelNames(out string[] names, string scoreColumnName = DefaultColumnNames.Score)
{
names = (string[])null;
Schema outputSchema = model.GetOutputSchema(dataView.Schema);
int col = -1;
if (!outputSchema.TryGetColumnIndex(scoreColumnName, out col))
return false;
int valueCount = outputSchema.GetColumnType(col).ValueCount;
if (!outputSchema.HasSlotNames(col, valueCount))
return false;
VBuffer<ReadOnlyMemory<char>> vbuffer = new VBuffer<ReadOnlyMemory<char>>();
outputSchema.GetMetadata<VBuffer<ReadOnlyMemory<char>>>("SlotNames", col, ref vbuffer);
if (vbuffer.Length != valueCount)
return false;
names = new string[valueCount];
int num = 0;
foreach (ReadOnlyMemory<char> denseValue in vbuffer.DenseValues())
names[num++] = denseValue.ToString();
return true;
}

我还在 gitter 中针对 ml.net (https://gitter.im/dotnet/mlnet) 提出了这个问题,并从 Zruty0 得到了这个回复

my best suggestion is to convert labels to 0..(N-1) beforehand, then train, and then inspect the resulting 'Score' column. It'll be a vector of size N, with per-class scores. PredictedLabel is actually just argmax(Score), and you can get the 2nd and other candidates by sorting Score

如果您有一组静态类,这可能是更好的选择,但我的情况是有一组不断增长的类。

关于c# - ML.Net 0.7 - 获取多类分类的分数和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com