Применение меры сходства (косинус) - pandas фрейм данных - PullRequest
1 голос
/ 12 июля 2020

У меня есть 2 pandas фрейм данных формы:

df.shape (1,8) 

df1.shape (14,8) 

Я хотел бы вычислить cosine_similarity df для каждой строки в df1. Вот несколько примеров данных:

данные

Попытка сделать что-то похожее на это, где строка - это значения в каждой строке:

def cosine_calc(row_arr):
    
    val = cosine_similarity(df.iloc[0].values, row_arr)
    
    return val

  # Apply function
  dfComp['Cosine_val'] = dfComp.apply(lambda x: cosine_calc(row), axis=1)

1 Ответ

3 голосов
/ 12 июля 2020
from sklearn.metrics.pairwise import cosine_similarity
cosine_similarity(df.values, df1.values)

Тестовый пример: Косинусное сходство матрицы (массива векторов) с самим собой должно быть симметричным c

assert np.all(
    cosine_similarity(df1.values, df1.values) - 
    cosine_similarity(df1.values, df1.values).T == 0)
...