【问题标题】:Checking Accuracy of GradientBoostingClassifier when predicting class probabilities在预测类别概率时检查 GradientBoostingClassifier 的准确性
【发布时间】:2018-09-23 11:47:06
【问题描述】:

在使用 GradientBoostingClassifiers 时,我试图获得模型预测的类的概率,我使用“predict_proba(X)”方法。 但我想知道如何检查这个预测的准确性。

P = np.array(D1.drop(['Class'], axis = 1))
q = np.array(D1['Class'])
P_train, P_test, q_train, q_test = train_test_split(P, q)

qst = GradientBoostingClassifier(criterion='friedman_mse', init=None,
              learning_rate=0.08, loss='deviance', max_depth=None,
              max_features=None, max_leaf_nodes=None,
              min_samples_leaf=1,
              min_samples_split=2, min_weight_fraction_leaf=0.0,
              n_estimators=400, presort='auto', random_state=None,
              subsample=0.8, verbose=0, warm_start=False).fit(P_train, q_train)

总数据集为 (17520x24) - 24 个特征,包括“类”特征 上面的代码有3个类

pred_prob_P_test = qst.predict_proba(P_test)

这给出了目标属于每个类别的百分比概率

我想检查这个预测概率的准确性。

【问题讨论】:

  • 请给我们您当前的代码
  • @ArtemisFowl,我刚刚用代码和一些 cmets 进行了编辑。

标签: python machine-learning classification prediction gbm


【解决方案1】:

你可以这样做:

from sklearn.metrics import accuracy_score

pred_prob_P_test = qst.predict(P_test)
accuracy_score(q_test, pred_prob_P_test)

使用accuracy作为指标如果您需要它只是为了报告任何人可以理解的东西而罚款。但是,您应该使用像多字符日志损耗的其他法令优化您的模型。

编辑:

pred_prob_P_test = qst.predict_proba(P_test)
preds = np.argmax(pred_prob_P_test, axis=1)
accuracy_score(q_test, preds)

【讨论】:

  • 谢谢,是的,我已经尝试过这个。这给了我一组预测的类。但我的目标是找到针对每个目标值发生的类的概率。这就是为什么我首先使用:qst.predict_proba(p_test)我想知道是否有一种方法来检查此精度。此外,由于我是一个初学者,我想知道我如何使用日志丢失优化,我得到了这个当前运行的日志损失值,我必须循环这个? span>
  • 编辑了上面的答案。虽然您可以调用predict来计算准确性,然后predict_proba以获得概率。优化日志损耗(或任何度量标准),请谷歌'交叉验证'。 Scikit拥有最多 - 如果不是全部 - 您需要的功能。 span>
猜你喜欢
  • 2018-12-24
  • 1970-01-01
  • 2019-09-16
  • 2018-04-19
  • 2020-08-25
  • 1970-01-01
  • 2021-05-01
  • 2020-10-17
  • 1970-01-01
相关资源
最近更新 更多