从xgb.train()获得概率

问题描述 投票:1回答:1

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

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

xgb.train()可以做预报(),但不能做预报_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'
python probability xgboost
1个回答
0
投票

因此,根据我的理解,您正在尝试获取预测阶段每个类别的概率。两个选项。

  1. 似乎您正在使用XGBoost本机api。然后只需选择'objective':'multi:softprob'作为参数,然后使用bst_constr.predict代替bst_constr.predict_proba

  2. XGBoost还提供了scikit-learn api。但是随后您应该使用bst_constr = xgb.XGBClassifier(**params_constr)初始化模型,并使用bst_constr.fit()进行训练。然后,您可以调用bst_constr.predict_proba获得所需的内容。您可以在这里参考更多详细信息Scikit-Learn API in XGBoost

© www.soinside.com 2019 - 2024. All rights reserved.