2017-05-30 3 views
1

Je travaille sur l'interprétation de mon modèle XGBoost. Prenons, par exemple, les deux jeux de données trainInput et trainOutput ci-dessous, respectivement:Utilisation de XGBoost pour prédire l'importance ou le pourcentage en fonction des entrées

df.trainInputs 
    input1 input2 input3 
0  1  0  0 
1  1  1  0 
2  0  1  1 
.. 

df.trainOutputs 
     output 
0  1 
1  0 
2  1 
... 

Les entrées de l'utilisateur ont été one-hot codées et les données de sortie est une liste de formats de sortie de l'utilisateur. J'entraîne mon modèle XGBoost avec ceux-ci, puis je prévois en me basant sur une autre matrice de données d'entrée codées à chaud unique provenant d'un autre ensemble de données. J'espère obtenir un score en pourcentage pour chaque élément de la colonne, mais lors de l'exécution de mon modèle, je ne reçois que des résultats binaires. Y a-t-il quelque chose qui me manque dans la construction de mon modèle? Le code correspondant:

df.predictInputs 
    input1 input2 input3 
0  1  1  0 
1  1  0  0 
2  1  0  1 
.. 

model = xgb.XGBClassifier() 
model.fit(trainInputs, trainOutput) 
y_pred = model.predict(predictOutput) 
+0

Pourquoi mettre 'predictOutput' comme argument de' model.predict'? Ne devrait-il pas être quelque chose comme 'predictOutputs = model.predict (testInputs)'? Ensuite, vous pouvez comparer 'predictOutputs' avec des sorties réelles pour voir le pourcentage correct. – frankyjuang

+0

Désolé, c'était une faute de frappe de ma part - j'utilise 'predictInputs'. Mon souci est que le résultat de 'predictOutputs' renvoie un binaire et non un pourcentage, mais il se peut que je manque une étape. – Kam

Répondre

2

Si vous voulez obtenir la probabilité de résultat (score de pourcentage pour chaque élément), utilisez predict_proba au lieu de predict.