2017-05-18 2 views
1

Je travaille sur un modèle prédictif en utilisant XGBoost (dernière version sur PyPl: 0.6) en Python, et j'ai développé cette formation sur environ la moitié de mes données. Maintenant que j'ai mon modèle final, je l'ai formé sur toutes mes données, mais j'ai reçu ce message, que je n'avais jamais vu auparavant:Spécification du paramètre tree_method pour XGBoost en Python

La méthode arborescente est automatiquement sélectionnée pour obtenir une vitesse plus rapide. à utiliser l'ancien comportement (exact algorithme glouton sur seule machine), réglez tree_method à «exact »

A titre d'exemple reproductible, le code suivant produit également ce message sur ma machine:

import numpy as np 
import xgboost as xgb 

rows = 10**7 
cols = 20 
X = np.random.randint(0, 100, (rows, cols))  
y = np.random.randint(0,2, size=rows) 

clf = xgb.XGBClassifier(max_depth=5) 
clf.fit(X,y)  

J'ai essayé d'installer tree_method à « exacte » à la fois l'initialisation et fit() étapes de mon modèle, mais chaque erreur: les lancers francs

import xgboost as xgb 
clf = xgb.XGBClassifier(tree_method = 'exact') 
clf 
> __init__() got an unexpected keyword argument 'tree_method' 


my_pipeline.fit(X_train, Y_train, clf__tree_method='exact') 
> self._final_estimator.fit(Xt, y, **fit_params) TypeError: fit() got an 
> unexpected keyword argument 'tree_method' 

Comment puis-je spécifier tree_method = 'exact' avec XGBoost en Python?

+0

regardant la [documentation python] (https://xgboost.readthedocs.io/en/latest/python/python_api.html# module-xgboost.core), je ne trouve aucun paramètre nommé 'tree_method'. –

Répondre

1

Selon le XGBoost parameter documentation, la valeur par défaut pour tree_method est "auto". Le paramètre "auto" dépend des données: pour les données "de petite à moyenne", il utilisera l'approche "exacte" et pour les ensembles de données "très grands", il utilisera "approximatif". Lorsque vous avez commencé à utiliser votre ensemble d'entraînement complet (au lieu de 50%), vous devez avoir franchi le seuil de taille d'apprentissage qui modifie la valeur automatique pour tree_method. Les docs ne savent pas combien d'observations sont nécessaires pour atteindre ce seuil, mais il semble qu'il se situe entre 5 et 10 millions de lignes (puisque vous avez rows = 10**7).

Je ne sais pas si l'argument tree_method est exposé dans le module XGBoost Python (il semble que ce ne soit pas, alors peut-être déposer un rapport de bogue?), Mais tree_method est exposé dans l'API R.

Les documents décrivent pourquoi vous voyez ce message d'avertissement:

enter image description here