ML.NET Cookbook:如何从CSV加载包含多个列的数据?
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ML.NET Cookbook:如何从CSV加载包含多个列的数据?相关的知识,希望对你有一定的参考价值。
TextLoader
用于从文本文件加载数据。您需要指定什么是数据列、它们的类型以及在文本文件中的位置。
当输入文件包含许多相同类型的列(通常打算一起使用)时,我们建议从一开始就将它们作为向量列进行加载:这样,数据的架构就更干净了,我们不会产生不必要的性能成本。
示例文件[1]:
-2.75;0.77;-0.61;0.14;1.39;0.38;-0.53;-0.50;-2.13;-0.39;0.46;140.66
-0.61;-0.37;-0.12;0.55;-1.00;0.84;-0.02;1.30;-0.24;-0.50;-2.12;148.12
-0.85;-0.91;1.81;0.02;-0.78;-1.41;-1.09;-0.65;0.90;-0.37;-0.22;402.20
0.28;1.05;-0.24;0.30;-0.99;0.19;0.32;-0.95;-1.19;-0.63;0.75;443.51
使用TextLoader
加载此文件:
// 创建加载器:定义数据列以及它们在文本文件中的位置。
var loader = mlContext.Data.CreateTextLoader(new[] {
// 我们将前10个值作为单个浮点向量加载。
new TextLoader.Column("FeatureVector", DataKind.Single, new[] { new TextLoader.Range(0, 10) }),
// 单独加载目标变量。
new TextLoader.Column("Target", DataKind.Single, 11)
},
// 默认分隔符是tab,但我们需要使用分号。
separatorChar: ';');
// 现在加载文件(记住,加载器是延迟执行的,所以实际加载将在访问数据时发生)。
var data = loader.Load(dataPath);
或者通过为其创建数据模型:
private class RegressionData
{
[LoadColumn(0, 10), ColumnName("Features")]
public float FeatureVector { get; set;}
[LoadColumn(11)]
public float Target { get; set;}
}
// 将数据加载到数据视图中。
var trainData = mlContext.Data.LoadFromTextFile<RegressionData>(trainDataPath,
// 默认分隔符是tab,但我们需要使用分号。
separatorChar: ';'
);
参考资料
[1]
示例文件: https://github.com/dotnet/machinelearning/blob/main/test/data/generated_regression_dataset.csv
以上是关于ML.NET Cookbook:如何从CSV加载包含多个列的数据?的主要内容,如果未能解决你的问题,请参考以下文章
ML.NET Cookbook:(11)如果我的训练数据不在文本文件中怎么办?