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)如何使用模型做出一个预测?

ML.NET Cookbook:(20)我如何定义自己的数据转换?

ML.NET Cookbook:如何从文本文件加载数据?

ML.NET Cookbook:如何调试实验或预览管道?