Я строю простой рекомендатель книг, в котором у меня есть только определенная информация о книге (цена, название, автор, жанр, дата публикации) и вообще нет информации о пользователе вообще (без рейтингов, без демографии), только их история покупок .
Итак, я хочу дать рекомендации на основе только этой истории покупок, например: пользователь A купил book1, book2 и book3, а пользователь B купил book1, book3 и book4, если я хочу получить рекомендации для пользователя AI, я могу предположить, что book4 будет хорошим вариантом, учитывая, что у них общие интересы в зависимости от их истории покупок.
Я пытаюсь реализовать KNN с косинусным сходством, но не я действительно знаю, как давать рекомендации на основе пользователя, я имею в виду, что я построил матрицу и выбрал параметры, но я не знаю, как использовать результаты, чтобы получить список рекомендованных книг для данного пользователя.
Вот как выглядит моя матрица (упрощенно):
product 63767 76863 84325 86217 86833 130365 537077 830166 997165 1023897
username
45michael 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0
7762hc 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
adrian12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
alicia7 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
angel8 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
Где 1 представляет, если пользователь купил книгу, и 0, если он / она не.
И вот что я сделал до сих пор:
# Matrix with users as rows, products as columns and count as content
df_matrix = pd.pivot_table(order_df, values='count', index='username', columns='product')
# Replace all NaN contents with 0
df_matrix_dummy = df_matrix.fillna(0)
# Convert dataframe of books features to scipy sparse matrix
product_matrix = csr_matrix(df_matrix_dummy.values)
model_knn = NearestNeighbors(metric='cosine', algorithm='brute', n_neighbors=20, n_jobs=-1)
Может ли кто-нибудь помочь мне или указать мне хороший урок?