При использовании пакета ML. net ошибка «System.ArgumentOutOfRangeException:« Несоответствие схемы для столбца объектов «Возможности»: ожидаемый вектор, полученный вектор Имя параметра: inputSchema »» была выведена на строку «var model = trainingPipeline. Fit (trainData);». Понимая ошибку, я не могу понять, почему она была выдана для кода
class Program
{
static void Main(string[] args)
{
MLContext mlcontext = new MLContext();
IDataView trainData = mlcontext.Data.LoadFromTextFile<ModelInput>("StockTrain.csv", separatorChar: ',', hasHeader: false);
var dataProcessPipeline = mlcontext.Transforms.Concatenate(outputColumnName: "Features", "age", "blPressure", "BiSkinthck", "NoPreg");
var trainer = mlcontext.Regression.Trainers.LightGbm(labelColumnName: "bmi", featureColumnName: "Features");
var trainingPipeline = dataProcessPipeline.Append(trainer);
var model = trainingPipeline.Fit(trainData);
IDataView testData = mlcontext.Data.LoadFromTextFile<ModelInput>("StockTest.csv", separatorChar: ',', hasHeader: false);
IDataView predictions = model.Transform(testData);
var metrics = mlcontext.Regression.Evaluate(predictions, "bmi");
//(0) (2) (3) (5) (7)
var input = new ModelInput //<4>,144,<58>,<28>,140,<29.5>,0.287,<37>,0
{
NoPreg = 4,
blPressure = 58,
BiSkinthck = 28,
age = 37
};
var result = mlcontext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(model).Predict(input);
Console.WriteLine($"Predicted bmi " + $"{result.bmi}");
}
public class ModelOutput
{
[ColumnName("Score")]
public int bmi;
}
public class ModelInput
{
[LoadColumn(0)]
public int NoPreg;
[LoadColumn(2)]
public int blPressure;
[LoadColumn(3)]
public int BiSkinthck;
[LoadColumn(5)]
public int bmi;
[LoadColumn(7)]
public int age;
}
}
Некоторые примеры данных используются:
6,148,72,35,0,33.6,0.627,50,1
1,85,66,29,0,26.6,0.351,31,0
8,183,64,0,0,23.3,0.672,32,1
1,89,66,23,94,28.1,0.167,21,0
0,137,40,35,168,43.1,2.288,33,1
5,116,74,0,0,25.6,0.201,30,0
Где используются только некоторые данные.