ML.NET Cookbook:(5)如何查看中间过程数据?

本文介绍了在ML.NET中处理数据时如何确保到某一时刻的数据处理结果。由于ML.NET操作的延迟执行特性,需要通过创建游标和使用GetColumn<T>方法来检查中间数据。示例展示了如何加载数据,创建处理管道,转换数据,并查看特定列的内容。这种方法对于理解和调试机器学习模型的预处理步骤至关重要。
摘要由CSDN通过智能技术生成

通常,当我们构建实验时,我们希望确保“到某一时刻”的数据处理产生我们想要的结果。对于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值