C# 如何插入要预测的列(标签)
我正在构建一个多类分类程序,我想动态插入CSV中的列车数据 我试过: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
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谢谢你的回答,我添加了代码,但应用程序在指定的秒数后仍继续运行,并且从未打印出有关模型的信息。你可以在进度处理程序中传递这些信息,以便让你知道正在发生的事情。查看如何使用它。