2

동안, 나는 코사인 유사성에게 전체 스파크 DataFrame 모든 사이의 열을 계산해야합니다. 팬더에서아파치 불꽃 파이썬 코사인 유사성은 추천인 시스템에 대한 DataFrames

나는이 작업을 수행하는 데 사용 :

같은 일을 할 수있는 방법이 있나요 (내가 조옮김을 사용하기 때문에) 열 사이의 유사성 매트릭스를 생성

import sklearn.metrics as metrics 
import pandas as pd 
df= pd.DataFrame(...some dataframe over here :D ...) 
metrics.pairwise.cosine_similarity(df.T,df.T) 

Spark (Python)에서?

는 (내가 열 행 수백만, 수천 수만 만든 매트릭스에이를 적용해야합니다, 그래서 스파크에서 그것을 할 필요가 이유입니다)

답변

2

당신은 columnSimilarities() 내장을 사용할 수 있습니다 메서드를 사용하여 정확한 코사인 유사성을 계산하거나 DIMSUM 메서드를 사용하여 예측할 수 있습니다.이 방법은 더 큰 데이터 집합의 경우 훨씬 더 빠릅니다. 차이점은 후자의 경우 threshold을 지정해야한다는 것입니다.

여기에 작은 재현 예제 :

from pyspark.mllib.linalg.distributed import RowMatrix 
rows = sc.parallelize([(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12)]) 

# Convert to RowMatrix 
mat = RowMatrix(rows) 

# Calculate exact and approximate similarities 
exact = mat.columnSimilarities() 
approx = mat.columnSimilarities(0.05) 

# Output 
exact.entries.collect() 
[MatrixEntry(0, 2, 0.991935352214), 
MatrixEntry(1, 2, 0.998441152599), 
MatrixEntry(0, 1, 0.997463284056)] 
+0

내가 대신 열 행 이상 어떻게 할 수 있습니까? – Charleslmh

+0

@mtoto Scala에서 같은 것을 구현하는 방법을 알고 있습니까? https://stackoverflow.com/questions/47010126/calculate-cosine-similarity-spark-dataframe –

+0

matrixEntry의 결과를 해석 할 수 있습니까? 0과 2는 무엇입니까? –