【问题标题】:RandomForestClassifier prediction_proba(X) outputs results only for one categoryRandomForestClassifier prediction_proba(X) 仅输出一个类别的结果
【发布时间】:2018-02-27 18:05:33
【问题描述】:

我正在使用RandomForestClassifier 运行一些模拟以在 2 个类别之间进行分类,并且我正在使用以下函数进行调试:

def predict_proba(self, X):

    print(X.shape)

    pred = self.clf.predict_proba(X)

    print(pred.shape)

    pred = pred.T[1]

    print(pred.shape)

    return pred

这个例程运行了几次,因为我已经拆分了我的数据,并且我得到了我上面编码的打印.shape 例程的以下输出。

(62, 93)
(62, 2)
(62,)

(62, 93)
(62, 2)
(62,)

(62, 93)
(62, 2)
(62,)

(62, 93)
(62, 1)
IndexError: index 1 is out of bounds for axis 0 with size 1

我的问题是为什么prediction_proba(X) 大多数时候输出(62, 2) 的形状(如预期的那样)而其他时间输出(62, 1) 的形状?

编辑

我想我理解了,似乎分类器只训练了一个类别,因为我没有使用 Stratified KFold 或类似的东西。

【问题讨论】:

  • 这与数据的形状有关

标签: python scikit-learn random-forest


【解决方案1】:

我已经解决了这个问题。发生这种情况是因为我将数据分成块,其中一些块在可能的 2 个类别中只有 1 个类别,因此 RandomForestClassifier 将只有 1 个类别中的 .fit()

我使用sklearn.model_selection.StratifiedKFold解决了它。

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 2023-03-22
    • 2020-11-22
    • 2018-07-22
    相关资源
    最近更新 更多