【译文】构建一个图书推荐系统 – 基础知识、knn算法和矩阵分解

本文介绍了如何构建图书推荐系统,包括基于评分计数和相关性的推荐方法,以及使用KNN协同滤波和矩阵分解的技术。通过分析Book-Crossings数据集,展示了如何处理评分分布不均、计算相关性和寻找近邻。实验证明,基于KNN和矩阵分解的推荐策略能有效找出相关书籍。
摘要由CSDN通过智能技术生成

作者 Susan Li

译者 钱亦欣

几乎每个人都有过过在某些网站被个性化推销商品的经历,亚马逊会告诉你购买这本书的读者还购买了…,Udemy则会显示浏览了这些课程的学生也浏览了…。Netfilix于2009年拿出了100万刀的奖金,举办了一个以将公司推荐精确度提高10个百分点为目标的数据大赛。

闲言少叙,如果你想从头学习如何架构一个推荐系统,就接着往下读。

数据

Book-Crossings 是一个由 Cai-Nicolas Ziegler 整理的关于图书评分的数据集。它有由90000位读者对270000本书籍做出了1100000万条评分记录,评分数据再1到10之间。

这个数据集共有三张表:评分表,书籍基本信息表和读者表,可以从此处下载。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
books = pd.read_csv('BX-Books.csv', sep=';', error_bad_lines=False, encoding="latin-1")
books.columns = ['ISBN', 'bookTitle', 'bookAuthor', 'yearOfPublication', 'publisher', 'imageUrlS', 'imageUrlM', 'imageUrlL']
users = pd.read_csv('BX-Users.csv', sep=';', error_bad_lines=False, encoding="latin-1")
users.columns = ['userID', 'Location', 'Age']
ratings = pd.read_csv('BX-Book-Ratings.csv', sep=';', error_bad_lines=False, encoding="latin-1")
ratings.columns = ['userID', 'ISBN', 'bookRating']

评分数据

评分数据集提供了读者对于书籍的评分时候数据,有1149780条记录和3个字段:userID,ISBN,bookRating。

print(ratings.shape)
print(list(ratings.columns))
(1149780, 3)
['userID', 'ISBN', 'bookRating']

img

评分分布

评分分布非常不均衡,绝大部分都是0。

plt.rc("font", size=15)
ratings.bookRating.value_counts(sort=False).plot(kind='bar')
plt.title('Rating Distribution\n')
plt.xlabel('Rating')
plt.ylabel('Count')
plt.savefig('system1.png', bbox_inches='tight')
plt.show()

img

图书数据

图书数据集提供了很多细节,它包含了271360条记录,有 ISBN, book title, book author, publisher 等8个字段。

print(books.shape)
print(list(books.columns))
(271360, 8)
['ISBN', 'bookTitle', 'bookAuthor', 'yearOfPublication', 'publisher', 'imageUrlS', 'imageUrlM', 'imageUrlL']

img

读者数据

这个数据集提供了读者的地域信息,有 user id, location, 和 age 3个字段,共278858条记录。

print(users.shape)
print(list(users.columns))
(278858</
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值