用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!


用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!文章插图
推荐系统无处不在 , 而且在整个网络上都是非常标准的 。 亚马逊、Netflix和许多这样的公司都在使用推荐系统 。 我们将要构建的这个版本与Spotify或Youtube音乐的使用非常相似 , 但要简单得多 。
接下来需要用到的工具是 Tableau 和 Python3。 先介绍一下数据集 , 稍后我将在数据可视化部分简要介绍Tableau 。
数据集百万首歌曲数据集是一个免费收集的音频功能和元数据为一百万个当前流行音乐曲目库 。
以下是数据集的链接:

用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!文章插图
这是我们需要合并的两个数据集 。 我们将使用Python3连接数据集并将其导入Tableau中进行数据可视化 。
#导入所有必需的库import numpy as npimport pandas as pd#导入两个数据集songmetadata = http://kandian.youth.cn/index/pd.read_csv(r'Path where the file is located')#其中一个文件是文本文件 , 因此我们使用pd.read_fwf导入它#fwf代表固定宽度文件othersongdata = http://kandian.youth.cn/index/pd.read_fwf(r'Path where the file is located')#为 othersongdata 命名列othersongdata.columns = ['user_id','song_id','listen_count’]#合并数据集并删除重复项song_df = pd.merge(othersongdata, songmetadata.drop_duplicates(['song_id']), on="song_id", how="left")#在.csv中写入文件以在Tableau中可视化song_df.to_csv(r'Path where you want to store the exported CSV file\File Name.csv', index = False)在合并数据集之后 , 我们得到的是一个一百万首歌曲的数据集 , 数据集有超过一百万个观测数据 , 由七个变量组成 。
Song_id = Object#数据集中每首歌的唯一ID , 数据集中总共有1000首歌User_id = Object #Unique ID for every user每个用户的唯一IDListen_count = int #Number of times a song was listened by an userArtist_name = Str #Name of Artist Title = Str #Title of each songYear = int #Categorical variable with lot of zero valuesRelease = Str#Album to which the songs belong to数据可视化可视化能给你所有你不知道的问题的答案--本·施奈德曼
可视化数据、理解数据和发现见解总是一个很好的实践 。 我使用Tableau是因为它很快 , 并且提供了大量可视化数据集的选项 。 Tableau大大改进了我们的工作流程 , 此外 , 它是免费的!
什么是TreeMaps?
在这个项目中广泛使用TreeMaps来显示数据 , 这些数据可视化后的非常易于观看 , 而且是可定制化的 。
维基百科已经用一种我无法理解的格式解释它:
【用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!】Treemaps将分层(树结构)数据显示为一组嵌套矩形 。 树的每个分支都有一个矩形 , 然后用代表分支的较小矩形平铺 。 叶节点的矩形区域与数据的指定维度成比例 。 通常叶节点被着色以显示数据的单独维度 。 --维基百科
Tableau
在写这篇文章的时候 , 我想 , 什么是最好的方式来解释一个人 , “如何在Tableau中创建TreeMaps?”. 我不想通过截图的途径 。 我能做什么?所以我制作了一个容易理解的视频 。
要将数据转换为表格 , 需要将.csv转换为excel工作簿 。 您可以使用python中的以下命令轻松完成此操作:
song_df.to_excel("millionsong.xlsx")有时转换需要大量的时间 , 所以我在这里提供了一个可以随时下载的excel工作簿 。
无论如何 , 这是一个全面的Tableau指南 , 它只是一个概述 , 让您熟悉Tableau是如何工作的 , 以及TreeMaps是如何制作的 。
用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!文章插图
第一个TreeMap表示数据集中年份变量相对于侦听计数的比例 。 图表显示数据集中有许多零 。 由于我们在创建音乐推荐系统时不会使用Year变量 , 因此我们不会删除这些观察结果 。
用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!文章插图
第二个TreeMap表示与数据集中的总侦听计数相关的艺术家 。 Coldplay以36406首点击率成为数据集中最受关注的艺术家 , 其次是Kings Of Leon , 点击率为32552 。
业务问题太多的选择会让用户不知所措 。 如果提供的选项太多 , 用户可能不会购买任何东西 。 像Spotify这样的流媒体服务有大量的目录 。 识别用户可能喜欢的跟踪并推荐他们可能喜欢的产品对他们的业务至关重要 。
用Python创建音乐推荐系统,下一个“网易云音乐”创建者就是你!文章插图
我们将创建两个播放列表 , 一个是流行的播放列表 , 第二个是识别与用户已经喜欢的歌曲相似的歌曲 , 从而为他们提供个性化的推荐 。