2017-09-04 72 views
0

我想为一个nlp问题使用RandomForestClassifier,但是当我使用predict_log_proba方法时,我得到一个除零错误。我看了一下predict_proba方法的结果,发现其原因是因为某些类(总共有6个类)的某些概率为0.因此,当predict_log_proba试图将np.log应用于0时,它会得到一个错误。有没有一个参数可以避免这个问题?Sklearn RandomForestClassifier predict_log_proba除以零误差

我知道predict_log_proba可以正确地使用一个随机森林分类,因为我看到这个示例代码使用它,它工作得很好:http://scikit-learn.org/stable/auto_examples/calibration/plot_calibration_multiclass.html

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

回答

2

那么如果你的模型输出给定类的零概率,那么这个类的对数概率就是负无穷。所以,如果你总结了日志空间中的概率(或者需要这个值),那么显然你不能使用它。

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

或者,您可以在应用对数之前软化模型的输出,例如将输出概率乘以0.99并加上0.01。

希望有所帮助。