sklearn:朴素贝叶斯分类器准确率较低



我有一个包含200,000个标记训练示例的数据集。对于每个训练示例,我有10个特征,包括连续的和离散的。我试图使用python的sklearn包来训练模型并做出预测,但我有一些麻烦(也有一些问题)。

首先让我写一下我已经写过的代码:

from sklearn.naive_bayes import GaussianNB
# data contains the 200 000 examples
# targets contain the corresponding labels for each training example
gnb = GaussianNB()
gnb.fit(data, targets)
predicted = gnb.predict(data)

问题是我得到了非常低的准确率(太多错误分类的标签)——大约20%。然而,我不太确定是否有数据问题(例如需要更多的数据或其他东西)或代码。

给定具有离散和连续特征的数据集,这是实现朴素贝叶斯分类器的正确方法吗?

此外,在机器学习中,我们知道数据集应该分为训练集和验证/测试集。这是由sklearn自动执行的,还是我应该使用训练数据集fit模型,然后使用验证集调用predict ?

如有任何想法或建议,我将不胜感激。

问题是我得到了非常低的准确率(太多错误分类的标签)——大约20%。然而,我不太确定是否有数据问题(例如需要更多的数据或其他东西)或代码。

这对朴素贝叶斯来说不是很大的错误,这是一个非常简单的分类器,你不应该期望它是强大的,更多的数据可能不会有帮助。你的高斯估计器可能已经很好了,简单的天真假设就是问题所在。使用更强的模型。你可以从随机森林开始,因为它很容易使用,即使是非该领域的专家。

给定具有离散和连续特征的数据集,这是实现朴素贝叶斯分类器的正确方法吗?

不,它不是,你应该在离散特征中使用不同的分布,但是scikit-learn不支持,你必须手动完成。如前所述,改变你的模型。

此外,在机器学习中,我们知道数据集应该分为训练集和验证/测试集。这是由sklearn自动执行的,还是我应该使用训练数据集拟合模型,然后使用验证集调用predict ?

这种方式不会自动完成任何操作,您需要自己完成(scikit learn有很多工具—参见交叉验证包)。

相关内容

  • 没有找到相关文章

最新更新