2017-08-13 4 views
0

J'essaie d'exécuter un exemple de code en utilisant le paquet Xgboost avec le paquetage xgbfir. Le code que j'essaye d'exécuter est le suivant:Xgboost TypeError: l'objet 'str' n'est pas appelable

from sklearn.datasets import load_iris, load_boston 
import xgboost as xgb 
import xgbfir 

# loading database 
boston = load_boston() 

# doing all the XGBoost magic 

xgb_rmodel = xgb.XGBRegressor().fit(boston['data'], boston['target']) 

# saving to file with proper feature names 
xgbfir.saveXgbFI(xgb_rmodel, feature_names=boston.feature_names, OutputXlsxFile = 'bostonFI.xlsx') 

# loading database 
iris = load_iris() 

# doing all the XGBoost magic 
xgb_cmodel = xgb.XGBClassifier().fit(iris['data'], iris['target']) 

# saving to file with proper feature names 
xgbfir.saveXgbFI(xgb_cmodel, feature_names=iris.feature_names, OutputXlsxFile = 'irisFI.xlsx') 

Je reçois l'erreur suivante et ne peux pas comprendre pourquoi ceci se produit. Il semble que booster() ne puisse pas être appelé dans Xgboost, mais je n'ai aucune idée de comment résoudre ce problème ou par où commencer.

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-152-af422c4cc325> in <module>() 
    10 
    11 # saving to file with proper feature names 
---> 12 xgbfir.saveXgbFI(xgb_rmodel, feature_names=boston.feature_names, OutputXlsxFile = 'bostonFI.xlsx') 
    13 
    14 

/Users/xxxxxxx/anaconda/lib/python2.7/site-packages/xgbfir/main.pyc in saveXgbFI(booster, feature_names, OutputXlsxFile, MaxTrees, MaxInteractionDepth, MaxDeepening, TopK, MaxHistograms, SortBy) 
    589  if not 'get_dump' in dir(booster): 
    590   if 'booster' in dir(booster): 
--> 591    booster = booster.booster() 
    592   else: 
    593    return -20 

T 

ypeError: 'str' object is not callable 

Cela peut-il être dû à la gestion des versions de Xgboost? J'apprécierais grandement toute aide pour résoudre ce problème.

+0

Je ne reçois aucune erreur avec la version 'xgboost == 0.6a2' et' xgbfir = = 0.2' sur Ubuntu. –

+0

Ce problème peut être lié à une mauvaise installation des paquets (même si xgboost fonctionne correctement, sauf la fonction booster). Je cours ceci sur un mac et les versions sont xgboost == 0.6 et xgbfir == 0.2. Connaissez-vous un moyen facile de mettre à jour xgboost == à 0.6a2? – zad0xlik

+0

Eh bien, j'ai réinstallé le paquet xgboost et cela ne fonctionne toujours pas, je n'ai aucune idée de comment résoudre ce problème ou où aller. – zad0xlik

Répondre

0

xgbfir.saveXgbFI (xgb_rmodel.get_booster(), FEATURE_NAME = boston.feature_names, OutputXlsxFile = 'bostonFI.xlsx')

+0

Bienvenue sur stackoverflow !! Essayez d'éviter les commentaires en réponse, sauf si vous avez une réponse spécifique. S'il vous plaît utiliser la boîte de commentaire ci-dessous et une fois que vous avez une réputation suffisante, vous serez en mesure de commenter sur n'importe quel poste. :) –