在XGBregressor中无法识别sample_weight

时间:2017-09-17 13:13:25

标签: python-3.x scikit-learn xgboost

我正在尝试使用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的情况下尝试这样做吗?

1 个答案:

答案 0 :(得分:0)

我能够通过从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