Пусть у меня есть Numpy матрица вроде следующего:создать косинус подобия матрицы NumPy
array([array([ 0.0072427 , 0.00669255, 0.00785213, 0.00845336, 0.01042869]),
array([ 0.00710799, 0.00668831, 0.00772334, 0.00777796, 0.01049965]),
array([ 0.00741872, 0.00650899, 0.00772273, 0.00729002, 0.00919407]),
array([ 0.00717589, 0.00627021, 0.0069514 , 0.0079332 , 0.01069545]),
array([ 0.00617369, 0.00590539, 0.00738468, 0.00761699, 0.00886915])], dtype=object)
Как я могу генерировать матрицу 5 х 5, где каждый индекс матрицы является косинус сходство двух соответствующих строк в моей оригинальная матрица?
например. значение строки 0 столбца 2 было бы сходством косинусов между строкой 1 и строкой 3 в исходной матрице.
Вот что я пробовал:
from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine
import numpy as np
#features is a column in my artist_meta data frame
#where each value is a numpy array of 5 floating point values, similar to the
#form of the matrix referenced above but larger in volume
items_mat = np.array(artist_meta['features'].values)
dist_out = 1-pairwise_distances(items_mat, metric="cosine")
Приведенный выше код дает мне следующее сообщение об ошибке:
ValueError: настройка элемента массива с последовательностью.
Не знаете, почему я получаю это, потому что каждый массив имеет одинаковую длину (5), которую я проверил.
Что вы пробовали? Покажите нам свой код. – DyZ
'1-pairwise_distances (f, metric =" cosine ")' делает именно то, что вам нужно, предполагая, что 'f' является исходным массивом в верхней части вашего сообщения. Может быть проблема с содержимым 'items_mat'. Можете ли вы показать первые, скажем, 5x5 элементов? – DyZ
Конечно - матрица в исходном посте была обновлена, чтобы отразить первые пять строк той, которую я вычисляю. Даже при вычислении сходства косинуса первых пяти строк я сталкиваюсь с ошибкой. – Sal