我在ML.net中运行二元分类器。输出类如下所示,它有一个”PredictedLabel”,通过试错我发现”score”和”probability”也是有效的。有效属性的文档在哪里?还有没有一个属性(与输入数据类中对应的名称),可以让我在输入数据中存储一个行ID,并在预测时输出?
谢谢
public class TargetData{ [ColumnName("PredictedLabel")] public bool Value { get; set; } public float Score { get; set; } public float Probability { get; set; }}
回答:
ML.NET依赖于模式理解来将对象的字段映射到数据视图的列上并返回。
您的视图数据可以包含的列没有限制。例如,您可以定义您的示例类为
public class Example{ // 假设您的特征是浮点数: public float FeatureA; public float FeatureB; // ... public bool Label; // 这里是一个任意的RowId列。 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
字段等。模式理解文档和其他链接的文档精确定义了哪些类型是允许的。