gpt4 book ai didi

python - 从 xgb.train() 获取概率

转载 作者:行者123 更新时间:2023-12-04 01:43:03 24 4
gpt4 key购买 nike

我是 Python 和机器学习的新手。我已经在互联网上搜索了我的问题并尝试了人们建议的解决方案,但仍然没有得到它。如果有人可以帮助我,我将不胜感激。

我正在开发我的第一个 XGboost 模型。我已经使用 xgb.XGBClassifier 调整了参数,然后想对模型变量强制执行单调性。似乎我必须使用 xgb.train() 来强制执行单调性,如下面的代码所示。

xgb.train() 可以做 predict(),但不能做 predict_proba() 函数。那么如何从 xgb.train() 获得概率?

我尝试使用'objective':'multi:softprob'而不是'objective':'binary:logistic'。然后得分 = bst_constr.predict(dtrain)。但是分数对我来说似乎不合适。

非常感谢。

params_constr={
'base_score':0.5,
'learning_rate':0.1,
'max_depth':5,
'min_child_weight':100,
'n_estimators':200,
'nthread':-1,
'objective':'binary:logistic',
'seed':2018,
'eval_metric':'auc'
}

params_constr['monotone_constraints'] = "(1,1,0,1,-1,-1,0,0,1,-1,1,0,1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,)"

dtrain = xgb.DMatrix(X_train, label = y_train)

bst_constr = xgb.train(params_constr, dtrain)


X_test['score']=bst_constr.predict_proba(X_test)[:,1]

AttributeError: 'Booster' object has no attribute 'predict_proba'

最佳答案

所以根据我的理解,你试图在预测阶段获得每个类的概率。两种选择。

  • 看来您正在使用 XGBoost native api。然后只需选择 'objective':'multi:softprob'作为参数,并使用 bst_constr.predict而不是 bst_constr.predict_proba .
  • XGBoost 还提供了 scikit-learn api。但是你应该用 bst_constr = xgb.XGBClassifier(**params_constr) 启动模型。 , 并使用 bst_constr.fit()为了训练。然后您可以调用bst_constr.predict_proba得到你想要的。更多详情可以引用这里 Scikit-Learn API in XGBoost .
  • 关于python - 从 xgb.train() 获取概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56589011/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com