ML.NET Cookbook:如何查看中间过程数据?
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ML.NET Cookbook:如何查看中间过程数据?相关的知识,希望对你有一定的参考价值。
通常,当我们构建实验时,我们希望确保“到某一时刻”的数据处理产生我们想要的结果。对于ML.NET来说,这不是很容易做到的:因为所有的ML.NET操作都是延迟执行的,所以我们构造的对象只是数据的“承诺”。
我们需要创建游标并扫描数据以获得实际值。一种方法是使用模式理解[1]并将数据映射到用户定义的IEnumerable
对象中。
另一种允许您检查中间数据的机制是GetColumn<T>
扩展方法。它允许您以IEnumerable
的形式查看一列数据的内容。
以下是所有这些操作:
示例文件[2]:
Label Workclass education marital-status
0 Private 11th Never-married
0 Private HS-grad Married-civ-spouse
1 Local-gov Assoc-acdm Married-civ-spouse
1 Private Some-college Married-civ-spouse
// 将数据加载到数据视图中。
var data = mlContext.Data.LoadFromTextFile<InspectedRow>(dataPath,
// 文件的第一行是标题,而不是数据行。
hasHeader: true
);
// 开始创建我们的处理管道。现在,让我们把所有的文本列连接在一起。
var pipeline = mlContext.Transforms.Concatenate("AllFeatures", "Education", "MaritalStatus");
// 转换数据。
var transformedData = pipeline.Fit(data).Transform(data);
// “transformedData”是数据的“承诺”。让我们实际加载它。
var someRows = mlContext
// 转换为用户定义类型的可枚举项。
.CreateEnumerable<InspectedRowWithAllFeatures>(transformedData, reuseRowObject: false)
// 取几个值作为数组。
.Take(4).ToArray();
// 提取“AllFeatures”列。这将取出整个数据集:确保只取几行,以防数据集太大。与静态API类似,只是您必须指定列名和类型。
var featureColumns = transformedData.GetColumn<string[]>(transformedData.Schema["AllFeatures"])
参考资料
[1]
模式理解: https://github.com/dotnet/machinelearning/blob/main/docs/code/SchemaComprehension.md
[2]示例文件: https://github.com/dotnet/machinelearning/blob/main/test/data/adult.tiny.with-schema.txt
以上是关于ML.NET Cookbook:如何查看中间过程数据?的主要内容,如果未能解决你的问题,请参考以下文章
ML.NET Cookbook:(17)如何在分类数据上训练模型?
ML.NET Cookbook:(18)如何在文本数据上训练模型?
ML.NET Cookbook:(10)如何使用模型做出一个预测?