scikit-learn - 使用 xgboost 进行校准

标签 scikit-learn xgboost

我想知道我是否可以在 xgboost 中进行校准。更具体地说,xgboost 是否带有现有的校准实现,如 scikit-learn 中的,还是有一些方法可以将 xgboost 中的模型放入 scikit-learn 的 CalibratedClassifierCV 中?

据我在 sklearn 中所知,这是常见的程序:

# Train random forest classifier, calibrate on validation data and evaluate
# on test data
clf = RandomForestClassifier(n_estimators=25)
clf.fit(X_train, y_train)
clf_probs = clf.predict_proba(X_test)
sig_clf = CalibratedClassifierCV(clf, method="sigmoid", cv="prefit")
sig_clf.fit(X_valid, y_valid)
sig_clf_probs = sig_clf.predict_proba(X_test)
sig_score = log_loss(y_test, sig_clf_probs)
print "Calibrated score is ",sig_score

如果我将 xgboost 树模型放入 CalibratedClassifierCV 会引发错误(当然):
RuntimeError: classifier has no decision_function or predict_proba method.
有没有办法将 scikit-learn 的优秀校准模块与 xgboost 集成?

欣赏你有见地的想法!

最佳答案

来自 2020 年 7 月的 hell 景观的注释:
您不再需要包装类。 predict_proba 方法内置于 xgboost sklearn python api 中。不确定它们是什么时候添加的,但它们肯定会在 v1.0.0 上出现。
注意:这当然只适用于具有 predict_proba 方法的类。例如:XGBRegressor 没有。 XGBClassifier 可以。

关于scikit-learn - 使用 xgboost 进行校准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585927/

相关文章:

python - 为什么我的模型总是准确地获得 0.5 AUC?

python - RandomizedSearchCV 和 XGBoost + 提前停止

c++ - 通过 gcc-6 在 OSX Sierra 上安装时,保持 "FATAL:/opt/local/bin/../libexec/as/x86_64/as: I don' t 理解 'm' 标志!”错误

具有许多功能的 R xgboost 重要性图

python - xgboost: AttributeError: 'DMatrix' 对象没有属性 'handle'

python - 为什么 xgboost.cv 和 sklearn.cross_val_score 给出不同的结果?

Python - Lasso/LassoCV 中的交互术语?

machine-learning - scikit学习: elastic net approaching ridge

python - 如何修复 scikit 机器学习中的错误?

python - 如何将二元类 Logistic 回归与 Python 合并