我正在使用以下代码创建我的机器学习模型。该模型的精度为0.76。我只是好奇地想知道我的测试数据中哪些记录失败了?有没有办法让我看到这些数据?
// 1. Load the dataset for training and testing
var trainData = ctx.Data.LoadFromTextFile<SentimentData>(trainDataPath, hasHeader: true);
var testData = ctx.Data.LoadFromTextFile<SentimentData>(testDataPath, hasHeader: true);
// 2. Build a tranformer/estimator to transform input data so that Machine Learning algorithm can understand
IEstimator<ITransformer> estimator = ctx.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text));
// 3. - set the training algorithm and create the pipeline for model builder
var trainer = ctx.BinaryClassification.Trainers.SdcaLogisticRegression();
var trainingPipeline = estimator.Append(trainer);
// 4. - Train the model
var trainedModel = trainingPipeline.Fit(trainData);
// 5. - Perform the preditions on the test data
var predictions = trainedModel.Transform(testData);
// 6. - Evalute the model
var metrics = ctx.BinaryClassification.Evaluate(data: predictions);发布于 2019-08-20 09:43:02
通过使用GetColumn和CreateEnumerable方法,您可以找到模型未正确预测的数据。
在您完成度量之后,对来自测试数据集的预测使用GetColumn方法,以获得原始标签值。然后,使用CreateEnuemrable方法获取包含预测值的预测。您也可以选择获取情感文本。
var originalLabels = predictions.GetColumn<bool>("Label").ToArray();
var sentimentText = predictions.GetColumn<string>(nameof(SentimentData.SentimentText)).ToArray();
var predictedLabels = context.Data.CreateEnumerable<SentimentPrediction>(predictions, reuseRowObject: false).ToArray();在获得数据之后,只需遍历其中一个标签(我对原始标签进行了计数),您就可以在每次迭代中访问数据。从那里,您可以检查实际标签是否与预测值不相等,以便仅打印出模型未正确获得的值。
for (int i = 0; i < originalLabels.Count(); i++)
{
string outputText = String.Empty;
if (originalLabels[i] != predictedLabels[i].Prediction)
{
outputText = $"Text - {sentimentText[i]} | ";
outputText += $"Original - {originalLabels[i]} | ";
outputText += $"Predicted - {predictedLabels[i].Prediction}";
Console.WriteLine(outputText);
}
}这样,您就拥有了所需的数据。:)

希望这能有所帮助!
发布于 2019-08-02 00:14:51
从你的评论中,我相信你正在寻找的方法可以在keras库中找到。该方法应该是在他们的documentation page上找到的keras.models.predict_classes。
这将为您提供预测输出的数组,然后您可以将其与地面事实进行比较。请访问文档以查看参数。
希望这能有所帮助!
https://stackoverflow.com/questions/57294709
复制相似问题