我正在关注 GitHubLabeler 结果引发异常:System.ArgumentOutOfRangeException: 'Score column 'Score' not found Parameter name: name' 调用时发生错误
mlContext.MulticlassClassification.CrossValidate(...)
我知道它要求它,但是 GitHubLabeler 没有提供它。
我已经调整了代码以从 List 加载,其中 T 是具有数百个浮点值的 ViewModel,我的实现如下:
var trainData = mlContext.CreateStreamingDataView(data);
var features = trainData.Schema.GetColumns()
.Select(tuple => tuple.column.Name)
.Where(name => name != labelName)
.ToArray();
var trainingPipeline = mlContext.Transforms.Conversion.MapValueToKey(labelName, "Label")
.Append(mlContext.Transforms.Concatenate("Features", features))
.AppendCacheCheckpoint(mlContext);
IEstimator<ITransformer> trainer = null;
var selectedStrategy = MachineLearningMethods.OVAAveragedPerceptronTrainer;
switch (selectedStrategy)
{
case MachineLearningMethods.SdcaMultiClassTrainer:
trainer = mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(DefaultColumnNames.Label,
DefaultColumnNames.Features);
break;
case MachineLearningMethods.OVAAveragedPerceptronTrainer:
{
// Create a binary classification trainer.
var averagedPerceptronBinaryTrainer = mlContext.BinaryClassification
.Trainers.AveragedPerceptron(DefaultColumnNames.Label,
DefaultColumnNames.Features,
numIterations: 10
);
trainer = mlContext.MulticlassClassification.Trainers.OneVersusAll(averagedPerceptronBinaryTrainer);
break;
}
default:
break;
}
trainingPipeline.Append(trainer).Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
Trace.WriteLine("=============== Cross-validating to get model's accuracy metrics ===============");
var crossValidationResults = mlContext.MulticlassClassification.CrossValidate(data: trainData
, estimator: trainingPipeline
, numFolds: 6
, labelColumn: "Label");
PrintMulticlassClassificationFoldsAverageMetrics(trainer.ToString(), crossValidationResults);
Trace.WriteLine("=============== Training the model ===============");
var model = trainingPipeline.Fit(trainData);