ml.net中哪些列可用于预测/输出类

时间:2018-08-16 18:42:25

标签: c# machine-learning ml.net

我正在ML.net中运行二进制分类器。输出类如下所示,它具有“ PredictedLabel”,通过反复试验,我发现“得分”和“概率”也有效。有效属性记录在哪里?并有一个我可以使用的属性(在输入数据类上具有一个对应的名称),该属性可以让我在将与预测一起输出的输入数据上存储行ID吗?

谢谢

public class TargetData
{
    [ColumnName("PredictedLabel")]
    public bool Value { get; set; }

    public float Score { get; set; }
    public float Probability { get; set; }
}

1 个答案:

答案 0 :(得分:1)

ML.NET依靠schema comprehension来将对象的字段映射到数据视图的列中并返回。

您的数据视图可以包含哪些列没有限制。例如,您可以将示例类定义为

public class Example
{
    // Let's say your features are floats:
    public float FeatureA;
    public float FeatureB;
    // ...
    public bool Label;

    // Here's an arbitrary RowId column.
    public string RowId; 
}

将创建RowId列,并在整个训练过程中进行传播,并将其保留在结果模型中。 为了读回它,只需在输出类中声明具有相同名称的字段/属性:

public class TargetData
{
    [ColumnName("PredictedLabel")]
    public bool Value { get; set; }

    public float Score { get; set; }
    public float Probability { get; set; }

    public string RowId { get; set; }
}

唯一的限制是允许的类型:例如,您不能声明GUID字段等。schema comprehension文档和其他链接的文档精确地定义了允许的类型。