Я пытаюсь адаптировать код 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
Любая идея будет много оценил, спасибо