2017-02-09 5 views
0

Je travaille sur un ensemble de données qui contient des valeurs manquantes dans certaines colonnes. J'essaie d'utiliser XGBRegressor de l'interface wrapper Scikit-Learn pour XGBoost. Là, il fournit un paramètre appelé 'missing' dans lequel vous pouvez entrer des valeurs float ou sinon il prend NaN de python par défaut. J'ai donc besoin d'aide pour savoir comment utiliser ce paramètre pour remplir les valeurs manquantes des colonnes de mon jeu de données. Ce sera utile si on peut me fournir un exemple simple aussi.Comment utiliser le paramètre manquant de XGBRegressor de scikit-learn

+1

Lorsque vous indiquez une valeur flottante comme 'missing', alors si cette valeur spécifique est présente dans vos données, elle est traitée comme valeur manquante. Par exemple, si vous spécifiez missing = 0.1, partout où 0.1 est présent, il sera traité comme une valeur manquante. [Regardez ici] (https://github.com/dmlc/xgboost/issues/21) pour plus de détails sur la gestion des valeurs manquantes –

+0

Donc, est-il un moyen de récupérer l'ensemble de données modifié qui a été modifié par xgboost –

+0

Je ne pense pas il modifie l'ensemble de données. Décide juste de la direction de la division pour l'ajustement quand il rencontre une valeur manquante –

Répondre

0

Le paramètre de valeur manquante fonctionne comme toute valeur que vous fournissez pour le paramètre « manquant » il le traite comme valeur manquante. Par exemple, si vous indiquez 0,5 comme valeur manquante, chaque fois qu'il trouve 0,5 dans vos données, il est considéré comme une valeur manquante. La valeur par défaut est NaN. Donc, ce que XGBoost fait est basé sur les données, il définit l'un des chemins comme chemin par défaut. Par exemple, en fonction d'un paramètre, il peut aller dans deux directions, soit à gauche ou à droite, de sorte que l'un de ces paramètres sera défini par défaut en fonction des données. Ainsi, chaque fois qu'une valeur manquante vient en entrée d'un paramètre, disons que vous avez défini 0.5 comme manquant, alors chaque fois que 0.5 vient dans les données, il prend le chemin par défaut. Au début, je pensais qu'il impute la valeur manquante, mais ce n'est pas le cas. Il ne fait que définir l'un des chemins par défaut et chaque fois qu'une valeur manquante vient, il prend ce chemin par défaut. Ceci est défini dans l'article XGBoost: A Scalable Tree Boosting System

1

sa compréhension que vous l'avez mélangé. Le paramètre manquant remplace seulement une certaine valeur (ou liste de valeurs) pour manquant (aka NaN) - la valeur par défaut est "np.nan"

si vous voulez remplacer les valeurs manquantes réelles pour une valeur différente, disons "X" tu dois le faire sur tes données avant d'appliquer le modèle.

si vous avez un dataframe "df" vous pouvez:

df.fillna(X) 

si vous avez un "tableau" de np.array vous pouvez:

np.nan_to_num(array) 

mais ce qui précède remplacer le np. nan avec zéros.

espoir qui aide,

+0

Je veux savoir ce qu'il fait réellement. remplace-t-il simplement la valeur manquante par une valeur par défaut comme zéro ou tente-t-elle de prédire quelle devrait être la valeur à la place de cette valeur manquante? –

+0

ma compréhension de cela est qu'il remplace simplement la valeur. – epattaro