【问题标题】:Why my classifier is not working well for new data (data which has not taken as dataset)?为什么我的分类器不适用于新数据(未作为数据集的数据)?
【发布时间】:2018-10-06 04:30:00
【问题描述】:

我的数据集有 copd 文档作为阳性数据 (86) 和 malaria(20) + diarreha(20) + 象皮病 (20) 作为阴性数据。所以我的数据集中的总文档为 146,其中 86 为阳性,60 为阴性。我采用了训练比例:测试是 3:1.ngram 范围是 (1,1)。我还从特征列表中删除了所有数字特征。我将特征的 tfidf 作为输入。我使用的是朴素贝叶斯算法用于训练和测试。准确度 = 89%,精确度 = 84%,召回率 = 100%。现在,我正在获取新文档以在我的数据集之外进行测试。其中 20 个文档为阳性(copd),20 个文档为阴性(不在我们的数据集中,即不在我们的数据集中的疾病) 现在它几乎将所有文档都预测为正数,或者我们可以说准确率随着值的增大而降低。我的问题是我在这里做错了什么?为什么我的分类器不适用于新文档? 我们将不胜感激任何类型的帮助。

【问题讨论】:

    标签: python-3.x machine-learning svm naivebayes


    【解决方案1】:

    您的训练集显然过度拟合。 您必须使用正则化来使您的模型在新数据上也能很好地泛化。

    你可以选择 L2 norm 或 Dropout 技术来防止过拟合。

    【讨论】:

    • 我是这个领域的新手,我对这些过拟合技术不太了解。但是我在计算词频和 tfidf 时只使用了 transform() 函数。据我所知,如果我将 fit_transform() 与测试数据一起使用,那么它会导致过度拟合,对吗?我非常感谢您对@Akshay_Bahadur 的关注。如果正则化是唯一的解决方案,那么您能建议任何链接吗?
    • 我建议你在网上搜索一下。为了给你一个要点,它给你的损失函数添加了一个噪音,这样你就不会太接近最小值了。
    猜你喜欢
    • 2020-08-15
    • 2015-03-31
    • 2013-01-10
    • 2021-05-21
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2018-09-21
    • 2018-06-28
    相关资源
    最近更新 更多