У меня есть фрейм данных панд, содержащий список вин с соответствующими атрибутами вина.
Затем я создал новый вектор-столбец, содержащий пустые векторы из этих атрибутов.
def get_wine_profile(id):
wine = wines[wines['exclusiviId'] == id]
wine_vector = np.array(wine[wine_attrs].values.tolist()).flatten()
return wine_vector
wines['vector'] = wines.exclusiviId.apply(get_wine_profile)
следовательно, векторный столбец выглядит примерно так
vector
[1, 1, 1, 2, 2, 2, 2, 1, 1, 1]
[3, 1, 2, 1, 2, 2, 2, 0, 1, 3]
[1, 1, 2, 1, 3, 3, 3, 0, 1, 1]
.
.
Теперь я хочувыполнить косинусное сходство между этим столбцом и другим вектором, который получается в результате вектора из пользовательского ввода Это то, что я пробовал до сих пор
from scipy.spatial.distance import cosine
cos_vec = wines.apply(lambda x: (1-cosine(wines["vector"],[1, 1, 1, 2, 2, 2, 2, 1, 1, 1]), axis=1)
Print(cos_vec)
это ошибка выброса
ValueError: ('operands could not be broadcast together with shapes (63,) (10,) ', 'occurred at index 0')
Я такжепытается использовать sklearn, но у него также есть та же проблема с формой массива
, в качестве конечного результата я хочу получить столбец с оценкой совпадения между этим столбцом и пользовательским вводом