【发布时间】:2018-07-16 16:23:42
【问题描述】:
XGBClassifier 的 Python 实现 does not accept 字符 [, ] or <' 作为特征名称。
如果发生这种情况,它会引发以下情况:
ValueError('feature_names may not contain [, ] or
似乎显而易见的解决方案是传递等效的 numpy 数组,并完全摆脱列名,但如果他们没有这样做,那一定是有原因的。
XGBoost 对特性名称有什么用处,简单地传递 Numpy Arrays 而不是 Pandas DataFrames 有什么缺点?
【问题讨论】:
-
您是如何解决这个问题的? :] 我看到的唯一评论是:
# prohibit to use symbols may affect to parse. e.g. []<。你也可以从你的 pandas DF 中删除标题 -
我通过在 fit、predict、predict_proba 等中使用
.values解决了这个问题。事实上,我创建了一个包装器,这样我就可以保留接口并随意传递 Pandas DataFrames。但是我想知道不使用熊猫我错过了什么。他们想用列名来做某事,对吧? -
如果你指的是xgboost,我不这么认为。当我将模型转储到 .txt 文件时,他们将“所谓的标题”重命名为数字。所以树中的分裂就像:如果 f[1]
标签: python pandas numpy scikit-learn xgboost