mis*_*Not 5 python machine-learning xgboost
我在Python中创建了一个xgboost分类器:
train是一个熊猫数据框,具有10万行和50列特征。目标是熊猫系列
xgb_classifier = xgb.XGBClassifier(nthread=-1, max_depth=3, silent=0,
objective='reg:linear', n_estimators=100)
xgb_classifier = xgb_classifier.fit(train, target)
predictions = xgb_classifier.predict(test)
Run Code Online (Sandbox Code Playgroud)
但是,经过训练后,当我使用此分类器预测值时,整个结果数组将是相同的数字。知道为什么会这样吗?
数据澄清:带有数字目标的〜50个数字特征
我还使用相同的数据尝试了sklearn的RandomForest回归,它确实给出了真实的预测。也许是xgboost实现中的合法错误?
我在 XGBoost 和 LGBM 上都遇到了类似的问题。对我来说,解决方案是增加训练数据集的大小。
我正在使用大型稀疏数据集(200,000 行和 7000 列)的随机样本(~0.5%)在本地机器上进行训练,因为我没有足够的本地内存用于该算法。结果证明,对我来说,预测值数组只是目标变量平均值的数组。这向我表明该模型可能欠拟合。欠拟合模型的一个解决方案是在更多数据上训练模型,所以我在具有更多内存的机器上尝试了我的分析,问题得到了解决:我的预测数组不再是平均目标值的数组。另一方面,问题可能只是我正在查看的预测值片段是从具有很少信息(例如 0 和 nan )的训练数据中预测出来的。对于信息很少的训练数据,
我遇到的其他建议解决方案都没有对我有帮助。总结包括的一些建议解决方案:1) 检查 gamma 是否太高 2) 确保您的目标标签不包含在您的训练数据集中 3) max_depth 可能太小。
归档时间: |
|
查看次数: |
7098 次 |
最近记录: |