c# - 在 Microsoft ML 中,如何配置分数和预测标签输出
问题描述
我们正在评估 ML.Net,0.6 版,我对错误消息感到沮丧......我的问题,也许有人知道我做错了什么。
我有一个为 ML.Net 创建的类,它有特性和标签。在我添加的学习管道中
var pipeline = new LearningPipeline() {
new TextLoader(_trainingFile.FullName).CreateFrom<MyClass>(useHeader: true, separator: separator),
new ColumnCopier(("Trend", "Label")),
new Dictionarizer("Label"),
new CategoricalOneHotVectorizer("Trend"),
new ColumnConcatenator("Features,"col1","col2",... "Trend"),
new StochasticDualCoordinateAscentClassifier()
{
Shuffle = false,
},
new PredictedLabelColumnOriginalValueConverter()
{
PredictedLabelColumn="PredictedLabel"
}
};
我的 Predict 类如下所示:
class MyPrediction
{
[ColumnName("PredictedLabel")]
public string PredictedLabels;
[ColumnName("Score")]
public float Scores;
}
趋势列是一个带有枚举标签的字符串。我进行了训练,效果很好,并不总是预测正确,但是当我添加分数列时出现错误。
无法将“Vec”类型的 IDataView 列“Score”绑定到“System.Single”类型的字段或属性“Scores”。
我需要做什么才能获得预测值和分数,欢迎提出建议。
解决方案
为了更广泛地回答,任何 ML.NET 训练的模型都是ITransformer
. 这意味着它可以Transform()
将输入数据集(“示例”)转换为输出数据集(“预测”)。
这种能力可以被称为“批量预测”:一旦你有了一个完整的示例数据集,你就可以通过调用Transform()
.
为了促进“示例到示例”的预测,我们添加了PredictionFunction
成语。这是一个完整的例子。
您可以从预测结果中“请求”任意数量的列:只需将相应的字段添加到您的“预测”类中,然后PredictionFunction
将适当地填充它们。
推荐阅读
- xml - 将 CardView 颜色与 App Background Color XML 分开设置(浅色视图)
- xml - 如何反转简单的双语词典
- c++ - 带有初始值设定项列表的约束自动 std::convertible_to
- javascript - 如何在 reactJS 中使用 emailJS 向特定用户发送电子邮件
- typescript - 使用打字稿在formik错误中键入不匹配错误
- docker - Docker 中的 Nextcloud - 使用端口错误地重新定向 Talk 应用程序
- c# - 使用当前上下文中不存在的未分配局部变量
- github - Cypress 通过 Github 测试与 Xray (Jira) 的集成
- javascript - React Element Type 无效,为什么会出现此错误,如何解决?
- react-native - 如何防止在网页中刷新页面后在 react-native-navigation 中丢失标题返回按钮?