如何根据训练集中不存在的证据使用朴素贝叶斯预测目标变量?

问题描述 投票:0回答:1

我正在做一个大学项目,截止日期即将到来。我被分配了一个使用 bnlearn 的朴素贝叶斯分类问题。从数据集中读取数据后,我完成了通常的训练测试分割,但分割总是这样进行,以便在测试集中有一些行的值(而不是列)不存在于训练集中。 例如,训练集可能包含多个年龄值,范围从 20 到 60,但是(再次举例)训练集缺少年龄属性值“40”。当我尝试从测试集中进行预测并且其中包含年龄 = 40 的行时会发生什么?繁荣,它停止了,它给了我一个错误:“KeyError:40.0”。即使它是唯一缺失的值,而我希望它忽略它。该值存在于原始数据集中,但分割后仅包含在测试集中,因此模型对此一无所知并且无法预测。对于多个属性上的多个值,会发生这种情况。

我尝试过分层分割,但没有成功。我还让模型从整个数据集中学习和预测,但正如您可能猜到的那样,它陷入了过度拟合。 我应该如何处理朴素贝叶斯模型中前所未有的证据?我是否只是跳到测试集的下一行?我担心这可能会给我留下一个非常有限的模型,无法得出任何可靠的结论。

python naivebayes bnlearn
1个回答
0
投票

我会推荐以下内容:

  • 如果数据集中有一些数据代表性不足,您可以考虑生成数据箱或值簇,以减少模型中未见值的概率。

  • 同时,请确保验证您的训练/测试拆分策略:打乱数据,如果您想保留训练集和测试集之间的目标值分布,请尝试分层拆分。

  • 如果这些建议不适用于您的用例,请尝试为您的数据集生成更多数据。如果数据集是您生成的,请尝试获取更多样本。如果您无法控制数据集的样本数量,您可以考虑使用过采样技术(如 SMOTE)来生成合成样本。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.