首页 文章

使用scikit-learn在Naive Bayes分类器中混合分类和连续数据

提问于
浏览
37

我之前使用scikit很多,但我认为高斯朴素贝叶斯适用于连续数据,伯努利朴素贝叶斯可以用于分类数据 . 但是,由于我想在模型中使用 both 分类和连续数据,我真的不知道如何处理这个问题 . 任何想法将不胜感激!

2 回答

  • 39

    您至少有两个选择:

    • 通过计算每个连续变量的百分位数,然后使用百分位数作为bin边界对连续变量进行分箱,将所有数据转换为分类表示 . 例如,对于一个人的身高,创建以下垃圾箱:“非常小”,“小”,“常规”,“大”,“非常大”,确保每个垃圾箱包含大约20%的训练集人口 . 我们没有任何实用程序可以在scikit-learn中自动执行此操作,但它自己不应该太复杂 . 然后在数据的分类表示上放置一个唯一的多项式NB .

    • 在数据的连续部分上独立地拟合高斯NB模型,在分类部分上拟合多项NB模型 . 然后通过将类赋值概率(使用 predict_proba 方法)作为新要素转换所有数据集: np.hstack((multinomial_probas, gaussian_probas)) 然后在新要素上重新设置新模型(例如,新高斯NB) .

  • 6

    简单的答案:乘以结果!!一样的 .

    朴素贝叶斯基于应用贝叶斯定理和每对特征之间的“天真”独立假设 - 意味着你计算贝叶斯概率依赖于特定特征而不保持其他特征 - 这意味着算法将每个概率乘以一个特征与来自第二个特征的概率(我们完全忽略了分母 - 因为它只是一个归一化器) .

    所以正确的答案是:

    • 从分类变量计算概率 .

    • 从连续变量计算概率 .

    • 乘以1.和2 .

相关问题