IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

[RStudio] prédiction données avec mots inconnus du modèle #TF-IDF #RandomForest


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut [RStudio] prédiction données avec mots inconnus du modèle #TF-IDF #RandomForest
    Salut,

    Nouveau problème aujourd'hui
    J'ai créé un modèle de prédiction avec RandomForest pour classifier mes individus en fonction d'un texte, grâce à la méthode TF-IDF.
    Se faisant je voulais le tester sur mes nouvelles données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    predictions <- predict(modele, newdata = new_data)
    et je me retrouve avec ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error in predict.randomForest(modele, newdata = new_data) : 
      Type of predictors in new data do not match that of the training data.
    Ok jusqu'à la c'est un problème normal. Pour le résoudre j'ai donc regardé la structure de mes données d'entrainement pour la comparer à celle de mon test. Mais c'est là que ça devient intéressant :

    VARIABLES DU MODELE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'data.frame':	750 obs. of  1000 variables:
     $ var1                                             : num  0 0 0 0 0 0 0 0 0 0 ...
     $ var2                                             : num  0 0 0 0 0 0 0 0 0 0 ...
     $ var3                                             : num  0 0 0 0 0 0 0 0 0 0 ...
     $ pred                                             : Factor w/ 152 levels : 1 152 53 90 104 118 118 5 105 8 ...
    VARIABLES DES NOUVELLES DONNEES :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'data.frame':	2 obs. of  1000 variables:
     $ var1                                             : num  0 0 
     $ var2                                             : num  0 0 
     $ var3                                             : num  0 0 
     $ pred                                             : Factor w/ 1 levels : NA NA
    Auriez-vous quelques idées ??

    J'ai déjà essayé:
    - De supprimer la variable à prédire de mes nouvelle données.
    - De mettre des NA à la variable à prédire pour les deux nouveaux individus (voir ci-dessus)
    - De mettre une valeur quelconque

    Ou peut-être le problème vient -il tout simplement d'autre part, je vous laisse juger.

  2. #2
    Membre averti
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Résolu !
    Les variables numériques ne posaient pas de problèmes.
    Cependant les variables de type factor devaient avoir le même nombre de levels.
    Soit rien de plus facile à faire, pour chaque variable factor nous ferons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    levels(factor_test) <- levels(factor_train)
    à bientôt,
    Mano

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour Mano.
    Je ne suis pas sûr que ta dernière manipulation (écraser le level d'une variable par le level d'une autre sans précautions) soit forcément une solution qui fasse exactement ce que tu souhaites, dans tous les cas.
    Un facteur est une combinaison d'un vecteur d'entiers (les codes stockés) et d'un dictionnaire de textes (les valeurs affichées). On voit et modifie le dictionnaire via la fonction levels.
    Le petit exemple ci-dessous te montre qu'on peut saccager le contenu d'un vecteur avec le remplacement de son dictionnaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    un <- as.factor(c("A","B","A","D"))
    deux <- as.factor(c("B","C","C","C"))
    levels(un)
    levels(deux)
    levels(deux) <- levels(un)
    un
    deux
    Chaque facteur est renuméroté (pour ses valeurs entières stockées) en fonction de son contenu. Donc l'entier 1 dans un jeu de données ne correspondra pas toujours au même libellé que l'entier 1 dans un second jeu de données. On le voit dans l'exemple : B est associé au code 2 dans le premier vecteur, mais au code 1 dans le second.
    Une solution serait plutôt de chercher à faire un merge entre les deux dictionnaires pour en tirer des correspondances.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] lire une base .accd contenant les données AVEC MOT DE PASSE à partir d'excel
    Par mister red dans le forum Sécurité
    Réponses: 1
    Dernier message: 15/03/2015, 16h36
  2. Importer un base de donnée avec mot de passe md5
    Par daviddu54 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/05/2010, 11h21
  3. Modèle physique de données avec Together
    Par lilio dans le forum Outils
    Réponses: 0
    Dernier message: 25/09/2009, 16h56
  4. Réponses: 5
    Dernier message: 31/03/2008, 17h07
  5. Réponses: 1
    Dernier message: 15/05/2007, 23h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo