我正在尝试使用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的默认参数值。
答案 0 :(得分:3)
如果您的模型输出给定类的概率为零,那么该类的对数概率为负无穷大。因此,如果您对日志空间中的概率进行求和(或者需要此值),那么显然您无法使用此值。
为了在随机森林中发生这种情况,这意味着所有树都同意该特定数据点的特定类的概率为零。你可以通过增加树的数量来减轻这种情况(这会增加至少其中一个人说这个例子属于那个类的机会)。或者你可以将max_depth
参数减少到类似的效果。
或者,您可以在应用对数之前软化模型的输出,例如将输出概率设置为min(max(p,0.001),0.999)。
希望有所帮助。