Я просто пытаюсь создать свой первый ML.NET проект, который я создал ранее с помощью Azure ML, Visual Interface, Python и т. Д., Но теперь я хотел сделать это с C #.
Я следовал этому учебнику, но с совершенно другим набором данных и целью.
В наборе данных есть много дополнительных столбцов, но моя модель данныхвыглядит следующим образом (указывая на индекс столбца в наборе данных):
using Microsoft.ML.Data;
namespace ML_Net
{
public class Earthquake
{
[LoadColumn(1)]
public int geo_level_1_id { get; set; }
[LoadColumn(2)]
public int geo_level_2_id { get; set; }
[LoadColumn(3)]
public int geo_level_3_id { get; set; }
[LoadColumn(4)]
public int count_floors_pre_eq { get; set; }
[LoadColumn(5)]
public int age { get; set; }
[LoadColumn(6)]
public int area { get; set; }
[LoadColumn(7)]
public int height { get; set; }
[LoadColumn(8)]
public int count_families { get; set; }
[LoadColumn(26)]
public int has_secondary_use { get; set; }
[LoadColumn(27)]
public double square { get; set; }
[LoadColumn(39)]
public double difference { get; set; }
[LoadColumn(40)]
public int damage_grade { get; set; }
}
public class DamagePrediction
{
[ColumnName("PredictedLabel")]
public int damage_grade;
}
}
Ошибка происходит из функции обучения:
public static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransformer> pipeline)
{
var trainingPipeline = pipeline
.Append(_mlContext.MulticlassClassification.Trainers
.SdcaMaximumEntropy("Label", "Features"))
.Append(_mlContext.Transforms.Conversion
.MapKeyToValue("PredictedLabel"));
_trainedModel = trainingPipeline.Fit(trainingDataView);
_predEngine = _mlContext.Model
.CreatePredictionEngine<Earthquake, DamagePrediction>(_trainedModel);
Earthquake building = new Earthquake()
{
geo_level_1_id = 1,
geo_level_2_id = 42,
geo_level_3_id = 941,
count_floors_pre_eq = 2,
age = 0,
area = 24,
height = 4,
count_families = 2,
has_secondary_use = 0,
square = 4.898979485566356,
difference = 0.8989794855663558
};
var prediction = _predEngine.Predict(building);
Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.damage_grade} ===============");
return trainingPipeline;
}
, которая говорит:
Возникло исключение: «System.ArgumentOutOfRangeException» в Microsoft.ML.Data.dll Произошло необработанное исключение типа «System.ArgumentOutOfRangeException» в Microsoft.ML.Data.dll Несоответствие схемы для столбца компонента «Функции»: ожидаетсяVector , есть Vector
Не могу понять, в чем проблема, не могли бы вы помочь мне с некоторыми идеями?
Я работаю только с числовыми даннымивот почему я сделалЯ не добавляю преобразование или индивидуализация , но, возможно, нормализация могла бы помочь .. Поскольку у меня есть некоторые поплавки ..
Заранее спасибо за все идеи!