我是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'
因此,根据我的理解,您正在尝试获取预测阶段每个类别的概率。两个选项。
似乎您正在使用XGBoost本机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。