2016-06-02 2 views
0

Mon trame de données de pandas géants ressemble à ceci:Groupe par les problèmes globaux pour les tableaux numpy sur les vecteurs de mots

Movieid review movieRating  wordEmbeddingVector 
1  "text" 4   [100 dimensional vector] 

Je suis en train d'exécuter une mise en œuvre doc2vec et je veux être en mesure de groupe par ids de films et Invitons la somme des vecteurs dans wordEmbeddingVector et calculer une similitude cosinus entre le vecteur résumé et le vecteur d'entrée j'ai essayé de faire

movie_groupby = movie_data.groupby('movie_id').agg(lambda v : cosineSimilarity(np.sum(movie_data['textvec'])), inputvector) 

Mais il semble fonctionner pendant des siècles et je pensais que je pourrais faire quelque chose de mal. J'ai donc essayé d'enlever la fonction de similarité et de juste grouper par et somme. Mais cela semble ne pas finir aussi bien (bien 1 heure et plus maintenant) Est-ce que je fais quelque chose de mal ou est-ce que c'est vraiment si lent? J'ai 135392 lignes dans mon cadre de données donc ce n'est pas énorme.

movie_groupby = movie_data.groupby('movie_id').agg(lambda v : np.sum(movie_data['textvec'])) 

Beaucoup apprécié!

Répondre

0

Il y a un bug dans votre code. À l'intérieur de votre fonction lambda, vous additionnez l'intégralité de l'ensemble de données au lieu du groupe. Cela devrait arranger les choses:

movie_groupby = movie_data.groupby('movie_id').agg(lambda v: np.sum(v['textvec'])) 

Note: Je l'ai remplacé hotel_data avec movie_data, mais devait être juste une faute de frappe.

+0

ah je comprends ... parce que v est une rangée mais comme une mini dataframe ... oui l'hôtel est une faute de frappe ... J'essayais de suivre un blog de TripAdvisor! Merci beaucoup :) – Roshini

+0

Oui, la fonction est appliquée à chaque groupe, et chaque groupe est une base de données. Une fois que vous comprenez que vous comprenez 'groupby' :) – IanS

+0

ouais je pense que j'étais plus confus avec ce que le lambda sélectionnait ... comme dans ce qui était v .. si c'était le groupe ou si on attendait juste le vecteur ou si c'est un dataframe ..... Mais je comprends maintenant! – Roshini