Самый быстрый способ рассчитать "косинус" метрики с Scipy
Мне дают матрицу единиц и нулей. Мне нужно найти 20 строк, которые имеют самые высокие показатели косинуса к 1 specific
строка в матрице:
Если у меня 10 рядов, а 5-й называется specific
Я хочу выбрать самое высокое значение между этими:cosine(1row,5row),cosine(2row,5row),...,cosine(8row,5row),cosine(9row,5row)
Сначала я попытался посчитать метрики. Это не сработало:
A = ratings[:,100]
A = A.reshape(1,A.shape[0])
B = ratings.transpose()
similarity = -cosine(A,B)+1
A.shape = (1L, 71869L)
B.shape = (10000L, 71869L)
Ошибка: Input vector should be 1-D.
Я хотел бы знать, как это реализовать эстетически, без ошибок, но самое главное - какое решение будет самым быстрым?
На мой взгляд, самый быстрый способ не реализуется с помощью scipy
; Мы просто должны принять всех specific
грести и смотреть на эти индексы во всех других рядах. Те строки, которые имеют наибольшее совпадение, будут иметь самую высокую матрицу.
Есть ли более быстрые способы?
1 ответ
Самый быстрый способ - использовать матричные операции: something like np.multipy(A,B)