推荐系统三大实例——项目代码的运行教程

《推荐系统开发实战》--高阳团


        书中附赠了完整的推荐系统项目代码,包括新闻推荐系统,图书推荐系统,音乐推荐系统三个项目。这里来分享一下我运行代码的过程。

        这里以新闻推荐系统为例进行配置和报错解决,音乐推荐系统和图书推荐系统的配置同理。

新闻推荐系统

        下图为新闻系统的项目文件,分为两个部分,NewsRec是项目后台文件,NewsRec-Vue是项目前端文件。(我使用的IDE为pycharm,导入项目时直接导入NewsRecSys文件夹)

实现思路

·各大主题下的热度排序

·每篇新闻的关键词抽取和展示

·基于item的推荐

·热度榜(注意覆盖度)

·为你推荐(不同用户行为不同看到的为你推荐也不同,指定几个用户作为展示)

后端依赖

·Python版本为3.6

·Python包和对应的版本在NewsRecSys/NewsRec/z-others/files/requirement.txt文件中

·安装依赖为 pip install -r requirement.txt

Django==2.1
PyMySQL==0.9.2
jieba==0.39
xlrd==1.1.0
gensim==3.6.0

不会使用上述方式的可以直接在设置-项目-python解释器中点击+安装对应版本的库。

安装时可以指定想要的版本,默认安装的是最新版本。

前端说明

·依赖Node.js,版本为10.13


运行说明

1.  mysql新建newsrec数据库,将NewsRecSys/NewsRec/z-others/files/newsrec.sql 文件导入

·建数据库以及表

方案一:命令行

用于排除错误及时修改代码。

方案二:使用Navicat for MySQL

下载Navicat 破解版 (链接:百度网盘 请输入提取码 提取码:qw8k)

在Navicat中可以直接将.sql文件拖到建立的连接中,缺点是不便排查错误代码,容易运行错误。两种结合使用。

注意:musicrec.sql文件中均有需要更新修改的地方:
(1)原代码所有建表语句中涉及到datatime类型时使用的是

`last_login` datetime(6) DEFAULT NULL,

可以修改为`last_login` datetime DEFAULT NULL,其他语句中同样需要删除datatime后面的(6)

参考博客:

https://blog.csdn.net/qq_17300595/article/details/122925167?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170183659016800197028326%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170183659016800197028326&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-122925167-null-null.142^v96^pc_search_result_base7&utm_term=datetime%286%29&spm=1018.2226.3001.4187

(2)musicrec.sql中不少表之间有外键约束,被参考的表应该先建立,否则无法建立具有外键约束的表。

按照以下顺序建表即可,使用musicrec.sql文件则可以做相应顺序修改:

(3)向表中插入数据时,若是数据含有小语种的字符,使用命令行语句则无法插入,所以建议插入语句直接将相对应的sql语句整理成.sql文件,拖入到Navicat for MySQL对应的数据库上,可以实现数据的插入。

(4)使用Navicat for MySQL,下载链接如下:

Navicat 破解版 (链接:百度网盘 请输入提取码 提取码:qw8k)

建立连接,双击变绿后先建立相应的数据库,再将newsrec.sql文件拖入到对应的数据库名上。

2.  修改 NewsRecSys/NewsRec/NewsRec/settings.py 文件中的ALLOWED_HOSTS为本地IP地址和本地mysql配置信息

本地IP地址:win+R打开命令行终端,输入ipconfig,IPv4地址即为本地IP地址。

3.  修改 NewsRecSys/NewsRec-Vue/config/index.js 中的 serverUrl

4.  修改 NewsRecSys/NewsRec-Vue/src/assets/js/linkBase.js 中的 serverUrl

5.  进入 NewsRecSys/NewsRec 执行python manage.py runserver 0.0.0.0:8000

出现如下界面说明配置成功:

注意:

运行过程中出现过的报错即修改方案:

报错:NameError: name 'byte2int' is not defined

解决方案:

导入six模块  :  import six

使用byte2int()或者int2byte()方法时,需要six.byte2int()、six.int2byte()调用


报错:TypeError: 'int' object is not subscriptable

解决:byte2int(x)中x为int,所以无法使用该方法,直接使用int(x)即可。


报错:

django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

version for the right syntax to use near '; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED' at line 1")

解决:

setting.py—>DATABASES 添加

'OPTIONS':{'isolation_level':None}

设置隔离级别


报错:

ImportError: cannot import name 'joblib' from 'sklearn.externals'

解决:

删除:from sklearn.externals import joblib
更改为:import joblib


报错:

December 05, 2023 - 10:57:55

Django version 2.1, using settings 'NewsRec.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

Error: You don't have permission to access that port.

解决:

检查端口号是否被占用:打开命令行终端窗口,输入命令:netstat -ano|findstr 8000

这个命令会列出所有正在使用的端口以及相应的进程ID

停止服务,释放端口:(如果有酷狗音乐,一定要确认退出,酷狗默认占用8000端口)

taskkill -pid 5564 -F

6.  进入 NewsRecSys/NewsRec-Vue 执行npm install / npm run dev

出现如下界面说明配置成功:

7.  点击上方面链接或者浏览器输入http://127.0.0.1:8001访问

选择登录用户:

选择感兴趣的领域:

 

为你推荐界面:

相关说明

后台访问地址:http://127.0.0.1:8000/admin/(admin,admin)

图书推荐系统

实现思路

·基于GBDT模型的图书推荐(不同用户行为不同看到的为你推荐也不同,指定几个用户作为展示)

·图书详情展示

·我的足迹


 

后端依赖

·Python版本为3.6

·Python包和对应的版本在BookRecSys/BookRec/z-others/files/requirement.txt文件中

·安装依赖为 pip install -r requirement.txt


 

前端说明

·依赖Node.js,版本为10.13


运行说明

·mysql新建bookrec数据库,将BookRecSys/BookRec/z-others/files/bookrec.sql 文件导入

·修改 BookRecSys/BookRec/BookRec/settings.py 文件中的ALLOWED_HOSTS为本地IP地址和本地mysql配置信息

·修改 BookRecSys/BookRec-Vue/config/index.js 中的 serverUrl

·修改 BookRecSys/BookRec-Vue/src/assets/js/linkBase.js 中的 serverUrl

·进入 BookRecSys/BookRec 执行python manage.py runserver 0.0.0.0:8000

·进入 BookRecSys/BookRec-Vue 执行npm install / npm run dev

·浏览器输入 http://127.0.0.1:8001 访问


相关说明

·后台访问地址:http://127.0.0.1:8000/admin/ (admin,admin)

注意:

后端Django和前端VUE框架配置同新闻推荐系统,需要注意的是:

bookrec的数据库建表语句中,同样需要删除datatime后面的(6)

依据外键约束,建表顺序为:

音乐推荐系统

实现思路

·利用网易云API获取部分数据

·基于标签进行歌单详情页的推荐、歌曲详情页的推荐、歌手详情页的推荐

·基于用户的协同过滤算法给用户推荐用户、个用户推荐歌曲

·基于物品的协同过滤算法给用户推荐歌手

·基于内容的推荐算法给用户推荐歌单

·个性化排行榜

·为你推荐(不同用户行为不同看到的为你推荐也不同)

·我的足迹,展示用户在站内的行为

后端依赖

·Python版本为3.6

·Python包和对应的版本在MusicRecSys/MusicRec/z-others/files/requirement.txt文件中

·安装依赖为 pip install -r requirement.txt

前端说明

·依赖Node.js,版本为10.13

运行说明

·mysql新建musicrec数据库,将MusicRecSys/MusicRec/z-others/files/musicrec.sql 文件导入

·修改 MusicRecSys/MusicRec/MusicRec/settings.py 文件中的ALLOWED_HOSTS为本地IP地址和本地mysql配置信息

·修改 MusicRecSys/MusicRec-Vue/config/index.js 中的 serverUrl

·修改 MusicRecSys/MusicRec-Vue/src/assets/js/linkBase.js 中的 serverUrl

·进入 MusicRecSys/MusicRec 执行python manage.py runserver 0.0.0.0:8000

·进入 MusicRecSys/MusicRec-Vue 执行npm install / npm run dev

·点击终端生成的链接或者浏览器输入 http://127.0.0.1:8001 访问

相关说明

后台访问地址:http://127.0.0.1:8000/admin/ (admin,admin)

用户名:admin

密码:admin


musicrec的建表顺序为:

用户登录:

选择喜爱的歌手:

选择喜爱的歌曲:

为你推荐界面:

歌单界面:

歌曲界面:

歌手界面:

用户界面:

排行榜界面:

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 基于Python的音乐推荐系统主要分为以下步骤: 1. 数据获取:从音乐平台API获取音乐库的数据,包括歌曲信息、歌手信息、专辑信息和用户行为。 2. 数据预处理:根据需求对数据进行清洗、去重、归一化和特征提取等处理,以便后续建模和分析。 3. 数据分析和建模:根据用户的历史听歌数据和标签数据,使用机器学习算法和推荐算法,建立推荐模型,预测用户的喜好和推荐相似的歌曲。 4. 推荐系统部署:将建立好的模型集成到推荐系统中,提供给用户个性化的推荐服务。 5. 用户反馈数据收集和处理:从用户反馈中获取歌曲评分、评论和播放次数等数据,对模型进行优化和改进,提升推荐效果。 6. 推荐结果可视化:通过网页、APP等途径将推荐结果展示给用户,并提供歌曲的试听、下载和分享等功能,以提升用户体验和赢得用户忠诚度。 在实际的推荐系统开发中,还需要考虑系统的性能、可扩展性、安全性和隐私保护等问题,以确保系统能够正常运行并满足用户需求。 ### 回答2: 基于Python的音乐推荐系统实现步骤如下: 1.数据收集与处理 首先需要获取音乐数据,可以通过公开API或爬虫技术进行收集。收集到的数据需要进行去重、筛选、转换格式等处理,使其符合推荐系统的要求。 2.特征提取与建模 音乐推荐系统需要对音乐数据进行特征提取,例如萃取出歌曲的流派、主唱、歌曲长度、歌词等特征。然后针对这些特征,建立推荐模型,可以选用基于内容、协同过滤、深度学习等模型。 3.用户画像与行为分析 用户画像是指对用户的特征和兴趣进行详细描述,以便推荐系统根据用户画像进行精准推荐。用户行为分析则是针对用户的历史行为数据进行分析,了解用户的兴趣、习惯等。 4.推荐算法设计 推荐算法是核心,不同的算法设计不同的计算方法,例如协同过滤算法、基于内容的过滤算法等。选用适合的算法,根据特定的场景进行调整和优化,从而提高推荐系统的准确度。 5.系统实现与测试 基于以上步骤,利用Python语言实现推荐系统,并进行测试。测试结果需要专业的评测指标来进行评估,例如准确度、召回率、F值等。 在实际应用中,还需要考虑一些其他因素,例如数据安全和用户隐私保护、推荐结果多样性和新颖性的平衡等。 这些因素也需要用相应的算法和技术进行处理。 ### 回答3: 基于Python的音乐推荐系统实现步骤如下: 1. 数据获取及预处理:首先需要获取音乐数据,可以通过网页抓取、API、爬虫等方式获取音乐总数、艺术家、歌曲、歌词、发行日期、风格、流派等信息。接着,对音乐数据进行清洗、去重、格式转换等预处理工作。 2. 构建用户画像:用户画像是基于用户评价和行为生成的信息模型,涉及到用户的基本信息、兴趣爱好、社交关系、历史行为等。通过数据挖掘、机器学习等技术可以构建出用户画像。 3. 特征提取:从音乐数据中提取出有价值的特征,比如:歌曲类别、艺术家、发行日期、流派、语音特征等,将其转成数字形式。 4. 相似度计算:计算用户画像和每首歌曲之间的相似度。计算相似度可以使用余弦相似度、Pearson相关系数等,可以根据不同的应用场景及数据特征选择合适的算法。 5. 推荐算法:设定一定的推荐策略,将计算得到的相似度与用户画像匹配,选择与用户画像最匹配的歌曲进行推荐。 6. 反馈及优化:用户对推荐系统的反馈是评估推荐系统好坏的重要指标,可以通过用户行为、满意度问卷、热度等方式收集用户反馈,根据反馈优化推荐算法。 7. 实现和部署:根据具体业务需求选择相应的框架和工具,实现推荐算法,并部署到线上环境中进行测试和运行。 总之,基于Python的音乐推荐系统实现步骤包括数据获取及预处理、构建用户画像、特征提取、相似度计算、推荐算法、反馈及优化和实现和部署。不同的场景需要选择合适的算法和框架,并不断优化完善,以实现更好的用户体验和商业效益。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值