2017-10-11 11 views
0

Probablement une question très bête donc soyez facile sur moi, mais ici je vais.Prédiction en utilisant sklearn's RandomForestRegressor

Alors, voici ce que mes données ressemble ...

date,locale,category,site,alexa_rank,sessions,user_logins 
20170110,US,1,google,1,500,5000 
20170110,EU,1,google,2,400,2000 
20170111,US,2,facebook,2,400,2000 

... et ainsi de suite. C'est juste un jeu de données de jouet que j'ai trouvé, mais qui ressemble aux données originales. J'essaye de construire un modèle pour prédire combien de connexions d'utilisateur et de sessions un site particulier aurait, en utilisant RandomForestRegressor de sklearn. Je fais les choses habituelles en encodant les catégories sur les étiquettes et j'ai formé mon modèle sur les huit premiers mois de l'année et maintenant je voudrais prévoir les connexions et les sessions pour le neuvième mois. J'ai créé un modèle formé sur les connexions et un autre sur les sessions.

Mon jeu de données de test est de la même forme:

date,locale,category,site,alexa_rank,sessions,user_logins 
20170910,US,1,google,1,500,5000 
20170910,EU,1,google,2,400,2000 
20170911,US,2,facebook,2,400,2000 

Idéalement, je voudrais passer dans l'ensemble de données de test sans les colonnes je besoin prédits, mais RandomForestRegressor se plaint des dimensions étant différentes entre la ensemble d'entraînement et de test.

Quand je passe le jeu de données de test sous sa forme actuelle, le modèle prédit les valeurs exactes dans les sessions et user_logins colonnes dans la plupart des cas et des valeurs avec des variations minuscules autrement.

J'ai mis à zéro les colonnes sessions et user_logins dans les données de test et les ai transmises au modèle, mais le modèle a prédit presque tous les zéros.

  • Mon flux de travail est-il correct? Est-ce que j'utilise RandomForestRegressor correctement?
  • Comment puis-je me rapprocher des valeurs réelles lorsque mon jeu de données de test contient des valeurs réelles? Les valeurs réelles dans les données de test sont-elles utilisées dans la prédiction?
  • Si le modèle fonctionne correctement, ne devrais-je pas obtenir les mêmes valeurs prédites si j'annule les colonnes que je cherche à prédire (sessions et user_logins)?
+0

Pouvez-vous ajouter votre code? –

Répondre

3

Vous ne devez pas transmettre la colonne que vous souhaitez prédire dans les données de test. Votre flux de travail n'est pas correct.

Si X est l'ensemble des colonnes des informations que vous avez, si y est l'ensemble des colonnes de l'information que vous voulez prévoir, alors vous devez passer (X_train, y_train) au cours de la formation (en utilisant la méthode fit), et (X_test,) uniquement pendant le test (en utilisant la méthode predict). Vous obtiendrez y_pred que vous pouvez comparer avec y_test si vous l'avez.

Dans votre exemple, si vous voulez prévoir user_logins:

X_train = array([['20170110', 'US', '1', 'google', '1', '500'], 
       ['20170110', 'EU', '1', 'google', '2', '400'], 
       ['20170111', 'US', '2', 'facebook', '2', '400']], 
       dtype='<U21') 
y_train = array(['5000', '2000', '2000'], dtype='<U21') 

X_test = array([['20170112', 'EU', '2', 'google', '1', '500'], 
       ['20170113', 'US', '1', 'facebook', '2', '400'], 
       ['2017014', 'US', '2', 'google', '1', '500']], 
       dtype='<U21') 

estimator = RandomForestRegressor().fit(X_train, y_train) 
y_pred = estimator.predict(X_test) 

Jetez un oeil à la documentation pour plus d'exemples, ou au tutorials.

+0

Veuillez ajouter un exemple de ce que vous entendez par X_train et y_train en utilisant les données de l'OP. –