【问题标题】:Why prediction from randomforest classifier .predict() and .predict_proba() don't match?为什么随机森林分类器 .predict() 和 .predict_proba() 的预测不匹配?
【发布时间】:2021-08-05 20:19:15
【问题描述】:

我训练了一个简单的随机森林分类器,然后当我使用相同的测试输入测试预测时:

rf_clf.predict([[50,0,500,0,20,0,250000,1.5,110,0,0,2]])

rf_clf.predict_proba([[50,0,500,0,20,0,250000,1.5,110,0,0,2]])

第一行返回array([1.]),而第二行返回array([[0.14, 0.86]]),其中预测是第一个浮点数0.14,对吗?

这两个怎么不匹配?我有点困惑。谢谢。

【问题讨论】:

    标签: python machine-learning classification random-forest ensemble-learning


    【解决方案1】:

    predict()函数返回特征所属的类,predict_proba()函数返回特征属于不同输出类的概率。

    示例: predict() 函数的输出结果表明该特征属于第 1 类(即)数组([1.])

    predict_proba() 函数的输出为您提供了属于每个输出类数组的特征的概率([[0.14, 0.86]])。特征属于 0 类的概率为 14%,特征属于 1 类的概率为 86%。

    参考文档:predict() docspredict_proba() docs

    【讨论】:

    • 谢谢,我想用它们来返回预测类,我定义了一个dict,例如0-not dead/1-dead,对于predict(),我怎样才能返回相应的类?
    • dict[clf.predict()[0]] 将返回预测类。
    【解决方案2】:

    看看sklearn.ensemble.RandomForestClassifierdocumentation 部分,特别是predict_proba 方法。

    返回:形状的 ndarray (n_samples, n_classes),或 n_outputs 的列表。如果 n_outputs > 1,则为此类数组。输入样本的类概率。类的顺序与属性classes_中的顺序相对应。

    因此,您得到的输出 (array([[0.14, 0.86]])) 是每个样本输入的样本中存在的每个类的概率列表。 predict() 方法只是为每个输入预测一个类(这就是为什么你得到 array([1.]) 作为返回)。

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 2021-06-23
      • 2017-06-26
      • 2019-10-17
      • 2014-08-07
      • 2019-02-19
      • 2013-05-04
      • 2018-02-18
      相关资源
      最近更新 更多