我的pandas数据框大致如下所示:
Movieid review movieRating wordEmbeddingVector 1 "text" 4 [100 dimensional vector]
我正在尝试运行一个doc2vec实现,我希望能够按电影ID进行分组,并对wordEmbeddingVector中的向量求和,然后计算求和后的向量与输入向量之间的余弦相似度。我尝试执行以下操作:
movie_groupby = movie_data.groupby('movie_id').agg(lambda v : cosineSimilarity(np.sum(movie_data['textvec'])), inputvector)
但它似乎运行了很长时间,我认为我可能做错了什么。所以我尝试去掉相似度函数,只进行分组和求和。但这似乎也无法完成(现在已经超过1小时了)。我做错了什么,还是它真的就这么慢?我数据框中有135392行,所以并不是很大。
movie_groupby = movie_data.groupby('movie_id').agg(lambda v : np.sum(movie_data['textvec']))
非常感谢!
回答:
你的代码中有一个错误。在你的lambda函数中,你对整个数据框进行了求和,而不是只对该组进行求和。以下代码应该可以解决这个问题:
movie_groupby = movie_data.groupby('movie_id').agg(lambda v: np.sum(v['textvec']))
注意: 我将hotel_data
替换成了movie_data
,但那应该只是一个打字错误。