【发布时间】:2021-06-02 11:13:55
【问题描述】:
我已经在 Python 3.8.5 上使用 xgboost 成功运行了机器学习算法,但在解释结果方面遇到了困难。
输出/目标是二进制的,已故或未死。
我自己和我的观众都非常了解来自 R 的 glm 的赔率比,而且我确信 xgboost 可以以某种方式显示这些信息,但我不知道如何。
我的第一反应是查看xgboost 的predict_proba 的输出
但是当我这样做时,我得到了
>>> deceased.pp.view()
array([[0.5828363 , 0.4171637 ],
[0.89795643, 0.10204358],
[0.5828363 , 0.4171637 ],
[0.89795643, 0.10204358]], dtype=float32)
我假设这些是 p 将进入公式 1/(1-p) 以计算每个输入项的优势比,例如 sex 和 age。
我在这个网站上发现了一个类似的问题,但答案对我没有帮助:
xgboost predict_proba : How to do the mapping between the probabilities and the labels
所以根据那里的答案,我使用.classes_ 得到这个
>>> deceased.xg_clf.classes_
array([False, True])
事实上,我什至不确定 xgboost 能否提供类似 glm 的优势比,最接近的似乎是 feature_importances。
但是,特征重要性并不能提供与优势比相同的信息。
但是.classes_ 没有告诉我如何找出哪些输入类别,例如age或sex有什么概率。
如何将classes_ 与输入类别相关联?
或者,如果这不正确或不可能,我还能如何计算 xgboost 中每个输入变量的优势比?
【问题讨论】:
标签: python-3.x machine-learning scikit-learn logistic-regression xgboost