Самый быстрый способ рассчитать "косинус" метрики с 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)

Другие вопросы по тегам