目录
第1关:构建用户-酒店矩阵
任务描述
本关任务:编写Python代码,实现用户-酒店矩阵的构建。
相关知识
为了完成本关任务,你需要掌握:
1 认识数据;
2 什么是用户-酒店矩阵;
3 如何构建用户-酒店矩阵。
认识数据
本实训使用的数据是从携程网采集到的用户对香港境内酒店评分的数据(用户信息已经脱敏)。该数据已经保存成了一个类似于excel表格文件的形式,可以把数据看成是一个表格。这个表格有4列,分别为id,name,user_id,user_score。其中id表示酒店ID,name表示酒店名称,user_id表示用户ID,user_score表示用当前户对该酒店的评分。部分数据截图如下图所示:

这些数据很好解读,比如第一行的意思是用户ID为4的用户给酒店ID为354047的酒店打了89分。
值得注意的是,该数据中同一个用户可能给多个酒店打分。例如截图中第2行和最后一行中,用户ID为9的用户给两个不同的酒店打了分。
这些用户对酒店评分的数据其实就是用户对酒店的评分行为,我们可以根据评分行为向用户推荐一些他可能喜欢的酒店,所以这样的评分行为对于实现酒店推荐系统至关重要。
什么是用户-酒店矩阵
如果想要统计出每个用户对所有酒店的评分怎么办呢?我们可以构建用户-酒店矩阵。
用户-酒店矩阵通俗来说就是用来描述不同用户对不同酒店打分的一个表格,其中第i行表示的是第i个用户,第j列表示第j个酒店。矩阵(可以看成是表格)中的值为用户对酒店的评分。这样看起来可能有点抽象,不如举个例子:假设数据如下:
酒店ID 酒店名称 用户ID 用户评分
1 酒店1 2 91
4 酒店4 4 90
2 酒店2 1 92
3 酒店3 4 85
2 酒店2 2 95
4 酒店4 1 94
5 酒店5 3 89
那么可以将用户ID排成一列,酒店ID排成一行,然后将用户对酒店的评分填进去,就构建出了用户-酒店矩阵(其中0值代表该用户没有给该酒店评分过)。
比如第一行数据中可以看出用户ID为2的用户给酒店ID为1的酒店打了91分。那么用户-酒店矩阵中的第2行第1列的值为91。
用户ID\酒店ID 1 2 3 4 5
1 0 92 0 94 0
2 91 95 0 0 0
3 0 0 0 0 89
4 0 0 85 90 0
那么用户-酒店矩阵有什么作用呢?主要有两个:首先,我们很轻松的从这个矩阵中看出每个用户对每个酒店的评分。其次,我们可以使用基于矩阵分解的方式实现酒店智能推荐。酒店智能推荐将会在下一关详细介绍。
如何构建用户-酒店矩阵
想要构建用户-酒店矩阵主要分以下几个步骤:
1. 读取原始数据
2. 获取用户和酒店的数量
3. 构建用户-酒店矩阵
读取原始数据
原始数据位于./step1目录中,文件名为hotel_data.csv(csv文件可以看成是一种更加轻便简单的excel文件),我们可以使用Pandas读取。代码如下:
# 导入pandas库
import pandas as pd
Python实现酒店智能推荐系统

最低0.47元/天 解锁文章

330

被折叠的 条评论
为什么被折叠?



