推荐系统实战系列(python版).rar_python实战音乐推荐系统

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第1张图片

SVD奇异值分解里具体说了SVD的基本原理解读,本次实战分析SVD的应用

数据说明:

本次数据使用的是用户听音乐的数据,具体数据有需要的可以关注公众号:不懂乱问(Andy_shenzl)后台留言。

回复:music。自主获取

当然可以自己在网上下载。

1、数据导入

import 

本次使用的数据量还是比较大的,倒入大概需要1分钟的时间

数据解读:

triplet_dataset.shape=(48373586, 3)

数据有近5000W行数据,3列

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第2张图片

数据变量分别为用户名、歌曲名称、听歌次数

还有一个歌曲的详细信息表,存储在数据库格式文件里

conn 
表的名称为:[('songs',)]
track_metadata_df 
shape=(999056, 14)

2、数据简单处理

查看下数据格式,去掉一些无用字段,只保留有用信息

del

将两份数据合并在一起

tt 

过程比较慢,大概需要1分半钟

triplet_dataset_merged.shape=(48373586, 8)

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第3张图片

推荐系统需要有用户对物品的打分,这里数据没有打分字段

所以我们需要处理一下,把听歌的次数作为评分,听的次数越多认为越喜欢

当然如果根据绝对的听歌次数会有失数据的平衡,所以我们用每个用户听每首歌的次数比上该用户听歌总次数的比值作为用户对当前歌曲的评分

#计算每个用户听歌的总次数

这样我们对数据的基本处理完成了

3、构造矩阵

SVD需要矩阵进行求解,所以我们需要对处理好的数据转换成矩阵格式

#重新定义

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第4张图片
构造矩阵
data_sparse:
<1019318x384546 sparse matrix of type ''
with 48373586 stored elements in COOrdinate format>

4、SVD计算

#导入相关包

定义两个函数来进行下面的操作

#SVD求解,之前讲过了

定义参数:

K=10
urm = data_sparse
MAX_PID = urm.shape[1]
MAX_UID = urm.shape[0]
U

uTest是随机选取的几个用户数据进行推荐

def 

可能运算比较慢,我们调用concurrent.futures加速

from 

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第5张图片

推荐系统实战系列(python版).rar_python实战音乐推荐系统_第6张图片

你可能感兴趣的:(推荐系统实战系列(python版).rar_python实战音乐推荐系统)