Код Middle Рекомендательные системы обновлено
Похожие товары по совместным покупкам
Условие
Даны корзины пользователей baskets (списки id товаров). Напишите similar_items(baskets, item, k): косинусная близость товара item с остальными по бинарным векторам «пользователь купил товар»: |U_a ∩ U_b| / √(|U_a|·|U_b|). Верните топ-k пар [id, близость] по убыванию близости (при равенстве по id), близость округлите до 4 знаков, товары с нулевой близостью не включайте.
Примеры
similar_items([["хлеб", "молоко"], ["хлеб", "масло"], ["молоко", "масло", "хлеб"], ["сок"]], "хлеб", 2) // [["масло", 0.8165], ["молоко", 0.8165]]
similar_items([["a", "b"], ["a"], ["c"]], "c", 3) // []
similar_items([["a", "b"], ["a", "b"], ["b", "c"]], "a", 5) // [["b", 0.8165]]
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.