【发布时间】:2017-03-24 23:20:25
【问题描述】:
我有一个数据集,其中包含 200000 个标记的训练示例。
对于每个训练示例,我有 10 个特征,包括连续的和离散的。
我正在尝试使用sklearn python 包来训练模型并进行预测,但我遇到了一些麻烦(还有一些问题)。
首先让我写一下我到目前为止写的代码:
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?
任何想法或建议将不胜感激。
【问题讨论】:
-
训练/测试拆分不会自动完成,但有许多内置功能可让您轻松完成。
-
看看cross validation的slearn函数
-
另一方面,您正在将模型拟合到所有数据,因此在预测相同数据时会期望相对较高的准确性。您可能想研究调整模型的超参数(请参阅
sklearn's page on parameter tuning -
向我们提供您的代码和数据示例
标签: python machine-learning scikit-learn bayesian naivebayes