我正在尝试使用Scikit-Learn API在Python中创建XGBoost回归模型,并指定了一个权重列。这是一个最小的代码示例:
from xgboost import XGBRegressor
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
model = XGBRegressor()
model.fit(df[['A','B']],df['D'],sample_weight=df['C'])
当我这样做时,我将获得以下输出:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-2d43e3c01bbb> in <module>()
6
7
----> 8 model.fit(df[['A','B']],df['D'],sample_weight=df['C'])
TypeError: fit() got an unexpected keyword argument 'sample_weight'
据我所知,根据文档,语法是正确的:https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn
其他人已经在不久前向XGBoost开发人员报告了此问题,并且似乎已经解决了,所以我不确定为什么仍会发生这种情况:
https://github.com/dmlc/xgboost/pull/1874
如何安装解决此问题的XGBoost版本?我正在使用Ubuntu 64位的Jupyter Notebook和Anaconda合作。我应该在没有anaconda的情况下尝试这样做吗?
我能够通过从github安装XGBoost而不是从PIP安装它来解决此问题。我还没有与Anaconda一起工作,但是以下内容对我来说是个技巧:
sudo apt-get install python3.6
sudo apt-get install git
git clone –recursive https://github.com/dmlc/xgboost
cd xgboost; make -j4
cd python-package; python3 setup.py install