2017-09-02 5 views
2

J'ai extrait du code ML qui fonctionnait sur kaggle (linux) et j'ai essayé de l'exécuter dans un cahier jupyter sur une machine Windows. Voici le code (certaines d'entre elles):XGBOOST - DMATRIX

##### RUN XGBOOST 
import xgboost as xgb 

print("\nSetting up data for XGBoost ...") 
# xgboost params 
xgb_params = { 
    'eta': 0.037, 
    'max_depth': 5, 
    'subsample': 0.80, 
    'objective': 'reg:linear', 
    'eval_metric': 'mae', 
    'lambda': 0.8, 
    'alpha': 0.4, 
    'base_score': y_mean, 
    'silent': 1 
} 

#### These lines were causing the folloing error on 9/1/2017: 
# AttributeError: module 'xgboost' has no attribute 'DMatrix' 
dtrain = xgb.DMatrix(x_train.values, y_train.values) 
dtest = xgb.DMatrix(x_test) 

num_boost_rounds = 250 
print("num_boost_rounds="+str(num_boost_rounds)) 

# train model 
print("\nTraining XGBoost ...") 
model = xgb.train(dict(xgb_params, silent=1), dtrain, 
num_boost_round=num_boost_rounds) 

print("\nPredicting with XGBoost ...") 
xgb_pred1 = model.predict(dtest) 

print("\nFirst XGBoost predictions:") 
print(pd.DataFrame(xgb_pred1).head()) 

Received l'erreur suivante:

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-7-a63b74bc35c6> in <module>() 
    17 #### These lines were causing the folloing error on 9/1/2017: 
    18 # AttributeError: module 'xgboost' has no attribute 'DMatrix' 
---> 19 dtrain = xgb.DMatrix(x_train.values, y_train.values) 
    20 dtest = xgb.DMatrix(x_test) 
    21 

AttributeError: module 'xgboost' has no attribute 'DMatrix' 

C'est étrange parce que je tire des modèles xgboost de machines linux à windows tout le temps. Je ne trouve pas d'informations sur la façon de réparer sur Internet, donc je me demande si quelqu'un sait comment réparer?

Répondre

2

Nous avons probablement le même problème. J'ai résolu le problème en indiquant explicitement à Python où trouver la bibliothèque xgboost.

La raison en est que j'ai plus de un script avec le nom xgboost.py. Python a peut-être importé l'un d'entre eux par erreur, de sorte qu'il ne peut pas trouver la définition de 'DMatrix'.

Voici la commande je:

export PYTHONPATH=~/xgboost/python-package 

Vous devez changer ~/xgboost/python-package 'dans le dossier où votre fichier /xgboost/python-package/setup.py situé.

+0

Résolu le problème. –