我必須計算每行之間的餘弦距離,但我不知道如何使用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])
在此先感謝所有幫助
您可以在哪裏應用數據框的列相似性? –