#python-3.x #dataframe #cosine-similarity
Вопрос:
Вот как выглядит мой набор данных в структуре фрейма данных Pandas:
df index id time var1 var2 var3 var4 var5 1 1 1 . . . . . 2 1 2 1 1 2 2 3 3 1 3 . . . . . 4 1 4 1 3 1 2 6 5 1 5 . . . . . 6 2 1 2 1 3 3 2 7 2 2 . . . . . 8 2 3 . . . . . 9 2 4 4 3 1 2 3 ...
Где есть несколько записей для каждого идентификатора с течением времени с некоторыми другими столбцами, которые будут использоваться для вычисления косинусного сходства(CS).
Я искал некоторые ресурсы, чтобы применить расчет CS в своем контексте, но не смог найти хороший.
Что я хочу сделать, так это вычислить CS, который будет получен в виде одного значения между вектором индекса 2 (1,1,2,2,3) и вектором индекса 4(1,3,1,2,6). В то же время мне также нужно избегать пропущенных строк, чтобы сделать это. Каждая группа идентификаторов имеет только два вектора.
Таким же образом для идентификатора 2, например, CS между (2,1,3,3,2) и (4,3,1,2,3).
Ниже приведен код, который, как я думал, может быть применен в моем случае, который будет генерировать CS как одно значение:
import scipy from scipy import spatial vector1 = [1, 1, 2, 2, 3] vector2 = [1, 3, 1, 2, 6] cosine_similarity = 1 - spatial.distance.cosine(vector1, vector2) print (cosine_similarity) Output: 0.8994895926845297
Каков был бы хороший способ решить эту проблему, пока я учитываю некоторые ограничения? Спасибо.