Ошибка, когда метка классификации мультикласса является строкой типа - PullRequest
0 голосов
/ 13 февраля 2019

Я только начинаю с ML.Net и меня смущает быстрое развитие API и примеров, основанных на различных версиях API.

Моя цель - прочитать несколько числовых столбцов и один текстовый столбец.указав метку («Бренд»), но я получаю сообщение об ошибке в последней строке этого фрагмента

var trainingDataView = mlContext.Data.ReadFromTextFile<PurchaseData>
    (path: trainDataPath, hasHeader: true, separatorChar: ',');

var dataProcessPipeline = mlContext.Transforms
    .Concatenate(DefaultColumnNames.Features,
                                nameof(PurchaseData.AgeBracket),
                                nameof(PurchaseData.Gender),
                                nameof(PurchaseData.IncomeBracket),
                                )                               
    .Append(mlContext.Transforms.CopyColumns("Label", nameof(PurchaseData.Brand)))
    .AppendCacheCheckpoint(mlContext);

var trainer = mlContext.MulticlassClassification.Trainers
    .StochasticDualCoordinateAscent(featureColumn: DefaultColumnNames.Features);
var trainingPipeline = dataProcessPipeline.Append(trainer);

var trainedModel = trainingPipeline.Fit(trainingDataView);

'Несоответствие схемы для столбца метки' Метка ': ожидаемое значение с плавающей запятой, двойное число или тип ключа,получил текст '

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

1 Ответ

0 голосов
/ 14 февраля 2019

Вам нужно будет преобразовать вашу метку в тип ключа, для алгоритмов нужны числа в качестве входных данных.Заменить: .Append(mlContext.Transforms.CopyColumns("Label", nameof(PurchaseData.Brand)))

На:

mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: DefaultColumnNames.Label,inputColumnName:nameof(PurchaseData.Brand))

Взгляните на это, например: https://github.com/dotnet/machinelearning-samples/blob/master/samples/csharp/end-to-end-apps/MulticlassClassification-GitHubLabeler/GitHubLabeler/GitHubLabelerConsoleApp/Program.cs

...