ML. NET Автоматическая ошибка API в мультиклассовой классификации - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь адаптировать код ethe из Учебное пособие: классифицировать проблемы поддержки с помощью мультиклассовой классификации с ML. NET для использования API автоматизированной модели.

Мои входные данные CSV, разделенный запятыми только с двумя столбцами: Text и Class (оба типа string)

Text,Class
blah blahblah blah,class1
blahblah blah blah,class1
blah blah blahblah,class2
...

Вот мои классы входной и выходной моделей:

public class ModelInput
{
    [LoadColumn(0)]
    public string Text { get; set; }

    [LoadColumn(1)]
    public string Class { get; set; }
}

public class ModelOutput
{
    [ColumnName("PredictedLabel")]
    public string Class { get; set; }

    public float Score { get; set; }
}

Сначала я загружаю свой ввод data:

var mlContext = new MLContext(seed: 0);
var data = mlContext.Data.LoadFromTextFile<ModelInput>("1000ofeach.csv", 
    hasHeader: true, separatorChar: ',', allowQuoting: true);

, затем преобразуйте столбец Text в объекты, а столбец Class - в число c:

var dataProcessPipeline = mlContext
    .Transforms.Conversion.MapValueToKey(inputColumnName: "Class", outputColumnName: "Label")
    .Append(mlContext.Transforms.Text.FeaturizeText(
        inputColumnNames: "Text",
        outputColumnName: "Features",           
        options: new TextFeaturizingEstimator.Options
        {
            CaseMode = TextNormalizingEstimator.CaseMode.Lower,
            KeepPunctuations = false,
            KeepDiacritics = false,
            KeepNumbers = false,
            StopWordsRemoverOptions = new StopWordsRemovingEstimator.Options
                { Language = TextFeaturizingEstimator.Language.English },
            WordFeatureExtractor = new WordBagEstimator.Options
                { NgramLength = 1, UseAllLengths = false }
        }));

ITransformer transformer = dataProcessPipeline.Fit(data);
IDataView transformedData = transformer.Transform(data);

и выполните эксперимент по автоматической мультиклассовой классификации для преобразованных данных:

var experimentResult = mlContext.Auto()
    .CreateMulticlassClassificationExperiment(300)
    .Execute(transformedData);

Пока все хорошо, но когда я пытаюсь создать механизм прогнозирования ...

var bestRun = experimentResult.BestRun;
var predEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(bestRun.Model);

, я получаю ArgumentOutOfRangeException:

Could not find input column 'Features' Parameter name: inputSchema 

Любая идея будет много оценил, спасибо

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