Python 3.x 为什么我的分类器不能很好地处理新数据(未作为数据集的数据)?
我的数据集将copd文档作为阳性数据(86),疟疾(20)+迪亚里哈(20)+象皮病(20)作为阴性数据。因此,我的数据集中的文档总数为146,其中86个为阳性,60个为阴性。我采用了训练比率:测试为3:1。ngram范围为(1,1)。我还从特征列表中删除了所有数字特征。我将特征的tfidf作为输入。我使用朴素贝叶斯算法进行训练和测试。准确率=89%,准确率=84%,召回率=100%。现在,我正在使用新文档在数据集之外进行测试。其中20份文件为阳性(copd),20份文件为阴性(不在我们的数据集中,即不在我们的数据集中的疾病) 现在它预测几乎所有的文档都是正面的,或者我们可以说准确度随着值的增大而降低。我的问题是我在这里做错了什么?为什么我的分类器不能很好地用于新文档?Python 3.x 为什么我的分类器不能很好地处理新数据(未作为数据集的数据)?,python-3.x,machine-learning,svm,naivebayes,Python 3.x,Machine Learning,Svm,Naivebayes,我的数据集将copd文档作为阳性数据(86),疟疾(20)+迪亚里哈(20)+象皮病(20)作为阴性数据。因此,我的数据集中的文档总数为146,其中86个为阳性,60个为阴性。我采用了训练比率:测试为3:1。ngram范围为(1,1)。我还从特征列表中删除了所有数字特征。我将特征的tfidf作为输入。我使用朴素贝叶斯算法进行训练和测试。准确率=89%,准确率=84%,召回率=100%。现在,我正在使用新文档在数据集之外进行测试。其中20份文件为阳性(copd),20份文件为阴性(不在我们的数据集
任何类型的帮助都将不胜感激。显然,您的培训内容太多了。 您必须使用正则化使您的模型在新数据上也能很好地泛化
你可以选择L2标准或辍学技术来防止过度拟合。我是这个领域的新手,我对这些过度拟合技术不太了解。但在计算术语频率和tfidf时,我只使用transform()函数。据我所知,如果我将fit_transform()用于测试数据,那么它将导致过度拟合,对吗?我非常感谢您的关注@Akshay_Bahadur。如果正则化是唯一的解决方案,那么你能推荐任何链接吗?我建议你在网上搜索。为了给你一个要点,它给你的损失函数增加了一个噪声,这样你就不会太接近极小值。