当预测特征非二值时,Sklearn的Bernoulli朴素贝叶斯分类器如何工作?
scikit-learn中BernoulliNB对非二值特征的运行逻辑
- 该现象的核心原因是
BernoulliNB类内置了自动二值化预处理逻辑,由构造参数binarize控制,不需要用户提前把输入特征处理为二值格式。 binarize参数的默认值为0.0,模型在训练和预测前会先对所有输入特征做统一转换:所有大于0.0的特征值会被转为1,小于等于0.0的特征值会被转为0。转换后得到的二值特征才会被用于执行标准Bernoulli朴素贝叶斯的计算逻辑。
你给出的官方示例中,输入特征X的取值范围是0~4的整数,经过默认规则的二值化处理后,所有非0值都会被转为1,0保持为0,内部实际参与计算的特征已经符合Bernoulli朴素贝叶斯的二值要求,因此可以正常输出预测结果。
如果需要使用你自行二值化后的特征,不希望模型自动做转换,可以在初始化模型时设置binarize=None,此时模型会默认输入已经是合法的二值特征,不会额外执行转换操作。
内容的提问来源于stack exchange,提问作者Girish Kumar Chandora
相关产品推荐
相关产品推荐

