C# 如何插入要预测的列(标签)

C# 如何插入要预测的列(标签),c#,ml.net,automl,C#,Ml.net,Automl,我正在构建一个多类分类程序,我想动态插入CSV中的列车数据 我试过: var loader = context.Data.CreateTextLoader( new[] { new TextLoader.Column("sentiment", DataKind.String,0), new TextLoader.Column("content", DataKind.String, 1), }, // First line of

我正在构建一个多类分类程序,我想动态插入CSV中的列车数据

我试过:

var loader = context.Data.CreateTextLoader(
    new[] 
    {
        new TextLoader.Column("sentiment", DataKind.String,0),

        new TextLoader.Column("content", DataKind.String, 1),
    },
    // First line of the file is a header, not a data row.
    hasHeader: true);

var trainData = loader.Load(_filePath);

var experiment = context.Auto().CreateMulticlassClassificationExperiment(240);

//find best model
var result = experiment.Execute(trainData);
Console.WriteLine(Environment.NewLine);
Console.WriteLine("Best run:");
Console.WriteLine($"Trainer name - {result.BestRun.TrainerName}");
当我运行程序时,我得到了这个错误

System.ArgumentException:'在培训数据中找不到提供的标签列'label'


我知道有一种方法可以在运行时创建一个类,并在LoadFromText中将其作为模式传递,但我还无法使其工作。

我想我知道您需要什么了。在
Execute
方法中,它可以在
列信息中接受一个重载

只需创建一个实例,该实例上的属性允许您指定标签列名

var labelColumnInfo = new ColumnInformation()
{
    LabelColumnName = "sentiment"
};
然后,您可以将其传递到
Execute
方法中

var result = experiment.Execute(trainData, labelColumnInfo);

这是你唯一的密码吗?您可以在transforms和trainers中指定要使用的列名,该列名可能适用于您想要执行的操作。@Jon编辑了更多代码,您使用的是哪个版本的ML.NET?这看起来可能是一个旧版本。@Jon ML.Net Latest stable 1.4.0和ML.AutoML Latest stable 1.16.0谢谢你的回答,我添加了代码,但应用程序在指定的秒数后仍继续运行,并且从未打印出有关模型的信息。你可以在进度处理程序中传递这些信息,以便让你知道正在发生的事情。查看如何使用它。