首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看失败的机器学习记录

如何查看失败的机器学习记录
EN

Stack Overflow用户
提问于 2019-07-31 23:53:07
回答 2查看 105关注 0票数 1

我正在使用以下代码创建我的机器学习模型。该模型的精度为0.76。我只是好奇地想知道我的测试数据中哪些记录失败了?有没有办法让我看到这些数据?

代码语言:javascript
复制
// 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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-20 09:43:02

通过使用GetColumnCreateEnumerable方法,您可以找到模型未正确预测的数据。

在您完成度量之后,对来自测试数据集的预测使用GetColumn方法,以获得原始标签值。然后,使用CreateEnuemrable方法获取包含预测值的预测。您也可以选择获取情感文本。

代码语言:javascript
复制
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();

在获得数据之后,只需遍历其中一个标签(我对原始标签进行了计数),您就可以在每次迭代中访问数据。从那里,您可以检查实际标签是否与预测值不相等,以便仅打印出模型未正确获得的值。

代码语言:javascript
复制
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);
    }
}

这样,您就拥有了所需的数据。:)

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2019-08-02 00:14:51

从你的评论中,我相信你正在寻找的方法可以在keras库中找到。该方法应该是在他们的documentation page上找到的keras.models.predict_classes

这将为您提供预测输出的数组,然后您可以将其与地面事实进行比较。请访问文档以查看参数。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57294709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档