Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么我的分类器不能很好地处理新数据(未作为数据集的数据)?_Python 3.x_Machine Learning_Svm_Naivebayes - Fatal编程技术网

Python 3.x 为什么我的分类器不能很好地处理新数据(未作为数据集的数据)?

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份文件为阴性(不在我们的数据集

我的数据集将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。如果正则化是唯一的解决方案,那么你能推荐任何链接吗?我建议你在网上搜索。为了给你一个要点,它给你的损失函数增加了一个噪声,这样你就不会太接近极小值。