J'ai du mal à obtenir un modèle XGBoost pour prédire le temps d'engagement d'un article à partir de son texte. Tout d'abord, je reçois un dataframe représentant les caractéristiques que j'extrait de l'article comme celui-ci:XGBoost: Mismatch de noms de caractéristiques
article_features = pd.concat([tfidf_df, numeric_df_normalized], axis=1)
Je puis train mon modèle et obtenir les bonnes colonnes pertinentes (caractéristiques):
with open('correct_columns') as fp:
correct_columns = pickle.load(fp)
Puis je passe par toutes les fonctionnalités nécessaires et les mettre à 0.0
si elles ne sont pas déjà en article_features
:
for col in correct_columns:
if col not in article_features.columns:
article_features[col] = 0.0
Enfin, supprimer des fonctionnalités qui étaient extrac cié de cet article qui n'existent pas dans les données de formation:
for col in article_features:
if col not in correct_columns:
del article_features[col]
Alors maintenant article_features
a le bon nombre de caractéristiques. J'essaie de courir:
model.predict(article_features)
Et je reçois:
ValueError: feature_names mismatch:...
Je Google et essayer convertir mon dataframe à:
model.predict(article_features.as_matrix())
Mais je reçois la même erreur.
J'étais alors inquiet ordre des colonnes dans article_features
ne pas être le même que correct_columns
donc je l'ai fait:
article_features.sort_index(axis=1, inplace=True)
mais nous avons eu la même erreur.
Une idée de réparation?
Merci!
Comment avez-vous formé le 'model'? Je veux dire quelles caractéristiques ont été utilisées dans cela? Exactement ces caractéristiques devraient être présentes lors de la prédiction sinon cela n'aurait aucun sens. –