Возьмите две матрицы, arr1, arr2 размера mxn и pxn соответственно. Я пытаюсь найти расстояние для косинусов их уважаемых строк как матрицу mxp. По сути, я хочу взять попарно точечное произведение строк, а затем разделить на внешнее произведение норм каждой строки.Косинус расстояние между двумя матрицами
import numpy as np
def cosine_distance(arr1, arr2):
numerator = np.dot(arr1, arr2.T)
denominator = np.outer(
np.sqrt(np.square(arr1).sum(1)),
np.sqrt(np.square(arr2).sum(1)))
return np.nan_to_num(np.divide(numerator, denominator))
Я думаю, это должно быть возвращающим матрицу MXN с записями в [-1.0, 1.0], но по какой-то причине я получаю значение из этого интервала. Я думаю, что моя одна из этих функций numpy делает что-то другое, чем то, что я думаю.
Если p отличается от n, то строки arr1 и arr2 не совпадают с lentgh. Как вы можете вычислить их внутренний продукт в этом случае? –
@ М. Массиас сожалел о том, что был m на n и p на n. Они должны иметь одинаковое количество столбцов. –