2017-09-17 1 views
0

Ich versuche ein Xgboost-Regressionsmodell in Python mithilfe der API "scikit-learn" zu erstellen, die eine Gewichtungsspalte angibt. Hier ist ein minimales Codebeispiel:sample_weight wird in XGBregressor nicht erkannt

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']) 

Wenn ich das tue, erhalte ich die folgende Ausgabe:

--------------------------------------------------------------------------- 
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' 

Soweit ich das beurteilen kann, die Syntax korrekt ist, entsprechend die Dokumentation: https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn

Andere haben dieses Problem auf die XGBoost Entwickler vor einiger Zeit berichtet, und es scheint behoben worden, so dass ich bin mir nicht sicher, warum dies noch geschieht:

https://github.com/dmlc/xgboost/pull/1874

Wie kann ich eine Version von xgboost installieren, die das behebt? Ich arbeite mit Jupyter Notebook und Anaconda auf Ubuntu 64-Bit. Soll ich das ohne Anaconda versuchen?

Antwort

0

Ich konnte das beheben, indem ich xgboost von github installiere, anstatt es von pip aus zu installieren. Ich habe es noch nicht mit Anaconda arbeiten lassen, aber das Folgende hat den Trick für mich gemacht:

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