【问题标题】:Python: How to interpret and improve predict_proba() in RandomForestPython:如何解释和改进 RandomForest 中的 predict_proba()
【发布时间】:2020-05-14 13:29:48
【问题描述】:

所以我正在使用 sci-kit 学习 RandomForestClassifier 将天文来源的数据分为三类。为了让我的问题更直接,我在我的测试集中只使用了两个来源并获得了predict_prob() 分数:

predictions = rf_model.predict(data_test)
probab =  rf_model.predict_proba(data_test)

print(probab)
print('True Classifications:', classif_test.values)
print('Predictions', predictions) 

给我以下信息:

[[0.29 0.69 0.02]
 [0.08 0.92 0.  ]]
True Classifications: ['HMXB' 'AGN']
Predictions ['HMXB' 'HMXB']

类顺序是[AGN, HMXB, SNR]。问题是这些预测之一是错误的,而另一个是正确的。

我有几个问题。 (a) 如何判断哪个predict_prob() 分数对应于错误预测? (b) predict_prob() 到底描述了什么?模型的分类被认为是正确的可能性有多大? (b) 导致预测不准确的类的高概率得分是什么意思?是我的数据集太小,还是有办法提高预测概率?

所以对于我的数据,我有 46 个 HMXB、17 个 AGN 和 3 个 SNR。每个来源都具有三个属性。我知道这是一个小数据集,但我想知道它是否太小以至于 RandomForest 或其他机器学习算法无法给出准确的结果。

【问题讨论】:

  • 我如何判断哪个 predict_prob() 分数对应于错误的预测? 不知道你在这里问什么...... 我的数据集是不是太小了你应该添加一些关于你的数据集的信息,如果可能的话,也应该添加一些示例数据
  • 因此两个来源的 predict_prob() HMXB 得分最高。但其中一个 HMXB 是 AGN。 0.69 或 0.92 的分数是否对应错误的预测?很抱歉问题不简洁,机器学习对我来说还是新事物,我的词汇量不足。
  • 我可以在您的数据集中发现 2 个问题。您已经知道,您的数据集太小而无法得到适当的训练,并且您的数据不平衡。可以搜索机器学习中的数据不平衡问题

标签: python machine-learning scikit-learn random-forest


【解决方案1】:

对于问题 (b) predict_prob() 到底描述了什么?
predict_prob() 将给出标签的概率。
例如,如果您有三个标签 ['A','B','C'] 并且 predict_prob() 给出 [0.29,0.69,.02],则意味着该特定数据的结果有 0.29 的概率变为“A” ,成为“B”的概率为 0.69,成为“C”的概率为 0.02。

对于问题 (a),我如何判断哪个 predict_prob() 得分对应于错误预测?
从您发布的输出中

[[0.29 0.69 0.02]
 [0.08 0.92 0.  ]]
Predictions ['HMXB' 'HMXB']

它清楚地表明每个列表中的第二项对应于“HMXB”。而其他两个概率(第一项和最后一项)我们需要查看数据并告诉我们。

是的,你的数据很小而且很不平衡。因为与其他两个相比,您有很多“HMXB”样本。尝试为其他标签获取更多样本。

【讨论】:

  • 我了解[0.29 0.69 0.02] 对应于预测的 HMXB,类似于其他列表。但其中之一具有 AGN 的实际真实分类。 [0.29 0.69 0.02] 是给出对应于真实 AGN 的类预测还是其他列表?
  • [0.29 0.69 0.02] 在此只有 0.69 对应于 HMXB。
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多