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