ML.NET - несоответствие схемы для столбца объектов «Возможности»: ожидаемый вектор <Single>, полученный вектор - PullRequest
1 голос
/ 17 октября 2019

Я просто пытаюсь создать свой первый 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

Не могу понять, в чем проблема, не могли бы вы помочь мне с некоторыми идеями?

Я работаю только с числовыми даннымивот почему я сделалЯ не добавляю преобразование или индивидуализация , но, возможно, нормализация могла бы помочь .. Поскольку у меня есть некоторые поплавки ..

Заранее спасибо за все идеи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...