我有一个训练有素的 sklearn 随机森林多标签分类器,在训练集中,始终存在一个类,这意味着您希望分类器始终为该类返回 1。发生这种情况,但是分类器返回 [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.]])]
为什么会出现这种情况,我该如何防止这种情况发生?在示例中,它是仅单个输入的结果,但是在我的情况下,我有一个完整的数据框作为输入,我将其转换为类预测。如果其中一个数组只有一个维度,则这是不可能的:[1] 而不是像其他类的预测那样的二维 [0,1]。
这可以通过 sklearn 中的设置进行更改吗?
额外说明为什么我有一个只有正类样本的训练集:这是推荐系统的一部分,有时每种类型的客户每次都会购买产品。
我使用简单的列表理解检查解决了它,该检查将第二列添加到不一致的输出数组中。执行此操作的代码如下,其中 rfc_output 是存在不一致列的随机森林输出。
rfc_output = [np.c_[x, np.zeros(window_size)] if len(x[1])<2 else x for x in rfc_output ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句