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)如果我的训练数据不在文本文件中怎么办?

ML.NET Cookbook:(18)如何在文本数据上训练模型?

ML.NET Cookbook:(12)我想看看模型的系数

ML.NET Cookbook:如何训练回归模型?

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

ML.NET Cookbook:(17)如何在分类数据上训练模型?