问题标签 [xgbclassifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何绘制 XGBoost 评估指标?
我有以下代码
在接下来的部分中,我正在训练XGBClassifier
模型
这给了我以下格式的指标
我从中制作了一个 DataFrame,并在时间 (0-99) 和其他指标之间绘制。有没有其他方法可以直接绘制输出?
python - XGBoost的损失函数和评价指标
我现在对 中使用的损失函数感到困惑XGBoost
。以下是我感到困惑的地方:
- 我们有
objective
,这是需要最小化的损失函数;eval_metric
:用于表示学习结果的度量。这两者完全不相关(如果我们不考虑仅用于分类logloss
并且mlogloss
可以用作eval_metric
)。这个对吗?如果我是,那么对于分类问题,您如何将rmse
其用作性能指标? - 以两个选项
objective
为例,reg:logistic
和binary:logistic
。对于 0/1 分类,通常应该将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两个选项中的哪一个是针对这个损失函数的,另一个的值是多少呢?说,如果binary:logistic
代表交叉熵损失函数,那么reg:logistic
做什么呢? multi:softmax
和有什么区别multi:softprob
?他们是否使用相同的损失函数,只是输出格式不同?如果是这样,那也应该是一样的reg:logistic
,binary:logistic
对吧?
第二题的补充
比如说,0/1 分类问题的损失函数应该是
L = sum(y_i*log(P_i)+(1-y_i)*log(P_i))
. 所以如果我需要在binary:logistic
这里选择,还是reg:logistic
让xgboost分类器使用L
损失函数。如果是binary:logistic
,那么使用什么损失函数reg:logistic
?
python - xgboost 模块无法识别
尽管在同一问题上还有另一个问题,但那里的解决方案对我不起作用。因此,这不是重复或重新发布。我在这里发布我的问题和实施细节。
我目前正在 PyCharm 上做一个简单的 ML 预测任务,我想在其中使用 xgboost。到目前为止,我已经执行了以下操作。
cd 进入虚拟环境文件夹
$ cd My_Project
激活 venv
source myproject/bin/activate
点安装 xgboost
$ sudo pip install xgboost
升级安装
$ sudo pip install --upgrade xgboost
我还使用 Python 3.6 将 xgboost 模块添加到 pycharm 中的项目解释器中。
我尝试运行的 python 文件具有以下导入。
但是当我运行脚本时,我得到了这个错误。
from xgboost import XGBClassifier ImportError: No module named 'xgboost'
规格
- Ubuntu 16.04
- PyCharm
- 蟒蛇 3.6
- 文件名:(
classifxg.py
不是xgboost.py
-根据 stackoverflow 上的另一个问题,据说会导致此No module 错误)
在这方面的任何帮助将不胜感激。
r - 如何优化 R 中的非参数模型?
我有一个二元分类 XGBTree 模型。用于训练模型的数据框包含许多自变量(x),我想优化一个 x 以提高结果变为 1 的机会。
我想知道它是如何实现的?我已经搜索了默认的优化函数,但似乎它只能求解方程,但 XGBTree 模型没有可供我输入的方程。和 Gurobi 一样,我看到的很多例子都需要一个方程。
无论如何我可以使用 XGBTree 模型进行优化吗?如果是这样,我该如何实现这种方法?我用来训练 XGBTree 的代码如下。
谢谢你。
一些真实的例子是如何实现的。
python - XGBoost - 获得 multi:softmax 函数后的概率
我有一个关于 xgboost 和多类的问题。我没有使用 sklearn 包装器,因为我总是与一些参数作斗争。我正在考虑是否有可能获得概率向量加上 softmax 输出。以下是我的代码:
我希望能够调用类似的函数predict_proba
,但我不知道是否可能。很多答案(例如:https : //datascience.stackexchange.com/questions/14527/xgboost-predict-probabilities)建议转移到 sklearn 包装器,但是,我想继续使用正常的训练方法。
scikit-learn - 如何修复python中的'name'cross_validation'未定义'错误
我正在尝试运行 XGBClassifier 参数调整并在这行代码之后得到“'name 'cross_validation' is not defined”错误:
也许我没有导入适当的库?
scikit-learn - 使用 OneVsRestClassifier 时如何传递 XGBoost 拟合参数?
我想通过 fit 方法传递 fit 的xgboost
参数OneVsRestClassifier
。
错误:fit() 得到了一个意外的关键字参数“estimator__eval_metric”
你能帮我如何使用fit 方法传递XGBoost
拟合参数吗?OneVsRestClassifier
python - 使用 XGBoost 获取单个功能的重要性
我已经训练了一个 XGBoost 二元分类器,我想为我给模型的每个观察提取特征重要性(我已经有了全局特征重要性)。
更具体地说,我正在寻找一种方法来确定,对于给定模型的每个实例,哪些特征具有最大的影响,并使输入属于一个或另一个类。我想知道使观察结果属于某个类别的前 5 个特征,以及我应该如何修改这 5 个特征以降低或增加属于该类别的概率的指示。
例如,假设我的模型根据房屋的位置、表面和卧室数量来预测房屋的价格是否超过 100,000 美元(这是正类)。我给它以下输入:伦敦,400 平方英尺,4 间卧室,我的模型预测房子属于正类的概率为 56%。我正在寻找一个 Python 模块或一个函数,它可以为每个观察显示最有影响力的特征。
python - 使用数据集的一部分来训练我的模型有意义吗?
我拥有的数据集是一组报价,这些报价提供给不同的客户以销售商品。商品价格每天都很敏感且标准化,因此围绕价格进行的谈判非常棘手。我正在尝试建立一个分类模型,该模型必须了解给定的报价是被客户接受还是被客户拒绝。
我使用了我知道的大多数分类器,XGBClassifier 表现最好,准确率约为 95%。基本上,当我输入一个看不见的数据集时,它能够表现良好。我想测试模型对价格变化的敏感程度,为了做到这一点,我综合重新创建了不同价格的报价,例如,如果报价为 30 美元,我以 5 美元、10 美元的价格提供相同的报价, 15 美元、20 美元、25 美元、35 美元、40 美元、45 美元……
我希望分类器在价格较低时给出高成功概率,在价格较高时给出低成功概率,但这并没有发生。经过进一步调查,我发现某些特征掩盖了模型中价格的重要性,因此必须加以处理。尽管我通过删除它们或对它们进行特征工程以更好地代表它们来处理大多数功能,但我仍然坚持一些我无法删除的功能(客户端要求)
当我检查结果时,发现该模型对 30% 的测试数据敏感,并且显示出有希望的结果,但对于其余的 70%,它根本不敏感。
这时我突然想到只提供可以清楚地捕捉价格敏感性或报价成功与报价成反比的那部分训练数据。这造成了大约 85% 的数据丢失,但是我希望模型学习的关系被完美地捕捉到了。
这将是模型的增量学习过程,因此每次出现新数据集时,我都会考虑首先评估它的价格敏感性,然后只输入对价格敏感的那部分数据进行训练。
在给出问题的一些背景信息后,我提出的一些问题是:
过滤掉我正在寻找的关系类型的片段的数据集是否有意义?
在较小的数据片段上训练模型并将特征数量从 21 个减少到 8 个,模型准确度下降到约 87%,但它似乎完美地捕捉到了价格敏感性位。我评估价格敏感度的方法是获取测试数据集,并为每个价格不同的报价人为添加 10 行,以查看模型中成功概率的变化。这是解决此类问题的可行方法吗?