2016-06-02 19 views
0

Mein Pandas Datenrahmen etwa wie folgt aussehen:Gruppe durch und aggregieren Probleme für numpy Arrays über Wortvektoren

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

Ich versuche, eine doc2vec Implementierung zu laufen und ich mag von Film-IDs Gruppe in der Lage sein, und die die Summe der Vektoren in wordEmbeddingVector zu nehmen und eine Cosinus Ähnlichkeit zwischen dem summierten Vektor und dem Eingangsvektor ich tun

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

versuchte berechnen Aber es schien ewig zu laufen und ich dachte, ich könnte etwas falsch tun. Also habe ich versucht, die Ähnlichkeitsfunktion zu entfernen und nur nach und nach zu gruppieren. Aber das scheint nicht so gut zu sein (gut 1 Stunde und höher) Mache ich etwas falsch oder ist es eigentlich nur so langsam? Ich habe 135392 Zeilen in meinem Datenrahmen, also ist es nicht massiv.

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

Viel geschätzt!

Antwort

0

Ihr Code enthält einen Fehler. Innerhalb Ihrer Lambda-Funktion summieren Sie sich über den gesamten Datenrahmen statt nur über die Gruppe. Dies sollte die Dinge beheben:

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

Anmerkung: Ich hotel_data mit movie_data ersetzt, aber das nur ein Tippfehler gewesen sein muss.

+0

aah Ich verstehe ... weil v eine Reihe ist, aber wie ein Mini-Dataframe ... ja Hotel ist ein Tippfehler ... Ich habe versucht, einen Blog von tripadvisor folgen! Vielen Dank :) – Roshini

+0

Ja, die Funktion wird auf jede Gruppe angewendet, und jede Gruppe ist ein Datenrahmen. Sobald Sie verstehen, dass Sie 'groupby' verstehen :) – IanS

+0

yeah Ich denke, ich war mehr verwirrt mit dem, was der Lambda wählte ... wie in was v war..wenn es die Gruppe war oder wenn es nur den Vektor oder wenn es erwartet ein Datenrahmen ..... Aber ich verstehe jetzt! – Roshini