首页 > 解决方案 > 如何使用 KNN 进行推荐

问题描述

我正在构建一个简单的图书推荐器,其中我只有某些图书信息(价格、标题、作者、流派、出版日期),根本没有用户信息(没有评级、没有人口统计)只有他们的购买历史

所以我想只根据这个购买历史进行推荐,例如:用户 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)

有人可以帮我一把或指点我一个好的教程吗?

标签: pythonpython-3.xknnrecommendation-enginecosine-similarity

解决方案


推荐阅读