sklearn.ensemble.RandomForestClassifier 输出不一致

sklearn.ensemble.RandomForestClassifier with non-consistent output

我有一个训练有素的 sklearn randomforest 多标签 classifier,在训练集中,一个 class 总是存在,这意味着你希望 classifier 总是 return 1 个 class。发生这种情况,但是 classifier returns [1] 而不是 [0, 1]。请参阅下面的输出:

[array([[0.05, 0.95]]), array([[0.97, 0.03]]), 
array([[0.95, 0.05]]), array([[1., 0.]]), array([[1., 0.]]), 
array([[1., 0.]]), array([[0.65, 0.35]]), array([[1.]])]

为什么会这样,我该如何防止这种情况发生?在这个例子中,它只是一个输入的结果,但在我的例子中,我有一个完整的数据帧作为输入,我将其转换为 class 预测。如果其中一个数组只有一个维度,这是不可能的:[1] 而不是像其他 classes.

的预测那样的二维 [0,1]

这可以通过 sklearn 中的设置进行更改吗?

额外说明为什么我的训练集只有正 class 个样本:这是推荐系统的一部分,有时每种类型的客户每次都会购买一种产品。

我使用简单的列表理解检查解决了这个问题,该检查将第二列添加到不一致的输出数组。执行此操作的代码如下,其中 rfc_output 是存在不一致列的随机森林输出。

rfc_output = [np.c_[x, np.zeros(window_size)] if len(x[1])<2 else x for x in rfc_output ]