我必须计算每行之间的余弦距离,但我不知道如何使用Spark API Dataframes优雅地完成它。这个想法是计算每行(项目)的相似度,并通过比较行之间的相似性来获得前10个相似度。 - >这是需要Item-Item Recommender System。使用Dataframe的行之间的火花余弦距离
所有我读过有关它被称为计算相似度超过列Apache Spark Python Cosine Similarity over DataFrames 可能有人说是它可以计算余弦距离优雅的使用PySpark数据帧的API或RDD的行之间或我必须做手工?
这只是一些代码来说明我打算做
def cosineSimilarity(vec1, vec2):
return vec1.dot(vec2)/(LA.norm(vec1) * LA.norm(vec2))
#p.s model is ALS
Pred_Factors = model.itemFactors.cache() #Pred_Factors = DataFrame[id: int, features: array<float>]
sims = []
for _id,_feature in Pred_Factors.toLocalIterator():
for id, feature in Pred_Factors.toLocalIterator():
itemFactor = _feature
sims = sims.append(_id, cosineSimilarity(asarray(feature),itemFactor))
sims = sc.parallelize(l)
sortedSims = sims.takeOrdered(10, key=lambda x: -x[1])
在此先感谢所有帮助
您可以在哪里应用数据框的列相似性? –