Однако проблема могла быть в ConvertType("is_duplicate",
outputKind: DataKind.Boolean)
, поэтому я создал собственный трансформатор:
Action<QuestionPairs, transformOutput> mapping = (input, output) => { output.Label = input.is_duplicate.Equals("1") ? true : false; };
IEstimator<ITransformer> pipeline = mlContext.Transforms.CustomMapping(mapping, contractName: null)
.Append(mlContext.Transforms.Text.FeaturizeText(inputColumnName: "question1", outputColumnName: "question1Featurized"))
.Append(mlContext.Transforms.Text.FeaturizeText(inputColumnName: "question2", outputColumnName: "question2Featurized"))
.Append(mlContext.Transforms.Concatenate("Features", "question1Featurized", "question2Featurized"))
//.Append(mlContext.Transforms.NormalizeMinMax("Features"))
//.AppendCacheCheckpoint(mlContext)
.Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: nameof(customTransform.Label), featureColumnName: "Features"));
Это, похоже, не помогло, поэтому мне было интересно, программа вообще правильно загружает набор данных.
Therfor Я добавил функцию Preview()
.
var file = pipeline.Preview(10);
foreach(var row in preview.RowView)
{
foreach(var column in row.Values)
{
Console.WriteLine(column);
}
Console.WriteLine("=============================================================");
}
Вывод: Как видите, Столбец is_dublicat иногда содержит строку, которая должна быть частью функций. Это вызвано ",", используемым в предложении функции.
После быстрого поиска я обнаружил атрибут allowQuoting: true
функции LoadFromTextFile()
, и результат кажется таким, каким должен быть : После выполнения полного кода результаты такие, какими они должны быть.