Sklearn RandomForestClassifier predict_log_proba除以零错误

时间:2017-09-04 19:31:55

标签: machine-learning scikit-learn

我正在尝试使用RandomForestClassifier来解决nlp问题,但是当我使用predict_log_proba方法时,我得到一个除零错误。我看了一下predict_proba方法的结果,发现原因是因为某些类的一些概率(共有6个类)都是0.所以当predict_log_proba尝试将np.log应用于0时,它会得到0一个错误。是否有一个参数可以避免这个问题?

我知道predict_log_proba可以在随机林分类器上正确使用,因为我看到这个示例代码使用它并且它工作正常:http://scikit-learn.org/stable/auto_examples/calibration/plot_calibration_multiclass.html

我正在使用sklearn版本0.19和RandomForestClassifier的默认参数值。

1 个答案:

答案 0 :(得分:3)

如果您的模型输出给定类的概率为零,那么该类的对数概率为负无穷大。因此,如果您对日志空间中的概率进行求和(或者需要此值),那么显然您无法使用此值。

为了在随机森林中发生这种情况,这意味着所有树都同意该特定数据点的特定类的概率为零。你可以通过增加树的数量来减轻这种情况(这会增加至少其中一个人说这个例子属于那个类的机会)。或者你可以将max_depth参数减少到类似的效果。

或者,您可以在应用对数之前软化模型的输出,例如将输出概率设置为min(max(p,0.001),0.999)。

希望有所帮助。