【问题标题】:true negative and false negative ero in confusion matrix混淆矩阵中的真阴性和假阴性 ero
【发布时间】:2013-02-16 19:20:24
【问题描述】:

我正在 matlab 中使用 libsvm 进行蛋白质结构类预测。使用我的不同维度特征集,我做了 7 折交叉验证并得到了很好的结果。但是当我尝试测试数据并获取混淆矩阵时,我得到的只是真阳性和假阴性的值,没有得到真阴性和假阳性的任何值。

我真的被困住了,如果有人通过提供解决方案帮助我,我将不胜感激。

【问题讨论】:

    标签: matlab machine-learning svm libsvm


    【解决方案1】:

    那么你为什么不自己计算呢?准确度为您提供预测“错误”的总数,因此如果您有 1000 个测试项目并且准确度为 80%,那么 false negatives+ false positives = 200。由于您有 false negatives 的数量,您可以计算 false positives = 200 - false negatives。同样,鉴于上述精度,这意味着 true negatives + true positives = 800,因此您可以计算 true negatives = 800 - true positives

    上述理由应该很容易推广到更多维度,但我可能在这里遗漏了一些东西,所以请澄清你的问题。

    【讨论】:

    • 感谢您的回复。但在我的情况下,真阳性和假假阴性显示出错误的结果。我真的很困惑。既然我从 sross 验证中得到了很好的结果,那么测试数据是否有可能得到错误的结果?
    • 是的,当然,这取决于您构建测试集的方式。假设你拿了你的训练集,你随机化其中向量的顺序,然后把它分成 3 部分:60% 的训练数据、20% 的交叉验证数据和 20% 的测试数据。在这种情况下,我看不出 CV 准确度与测试准确度有很大差异的原因。如果您当前的训练数据与测试数据的来源不同,那么它确实会给出糟糕的结果。
    • 非常感谢您的回复。我的问题是我得到了错误的 TP、TN、FP、FN 值。
    • 非常感谢您的回复。我的问题是我得到了错误的 TP、TN、FP、FN 值。就像我用 200 个 1 类数据和 373 个 -1 类数据进行测试,而用 243 个 1 类数据和 857 个数据进行训练。它给了我像 TP 535 和 FN 38 ,TN 0 和 FP 0 这样的输出。在这里我得到了完全错误的测试结果。我正在使用来自同一来源的数据集进行测试。我对整个数据集进行了 sross 验证。我的 CV 得到了很好的结果,但是我的分类器错了,因为我得到了错误的测试结果吗?
    • 好吧,在这种情况下,您可能需要了解更多细节并发布您的数据集和用于调用 libsvm 子例程的代码。尽管这里有很多聪明人,但我认为您可能会更幸运地在Cross Validated上获得相关答案@
    猜你喜欢
    • 2021-12-14
    • 2021-07-23
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2018-06-02
    • 2016-02-03
    • 2015-09-28
    相关资源
    最近更新 更多