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

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


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

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

新闻推荐系统

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

推荐系统三大实例——项目代码的运行教程_第1张图片

实现思路

·各大主题下的热度排序

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

·基于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解释器中点击+安装对应版本的库。

推荐系统三大实例——项目代码的运行教程_第2张图片

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

推荐系统三大实例——项目代码的运行教程_第3张图片

前端说明

·依赖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文件则可以做相应顺序修改:

推荐系统三大实例——项目代码的运行教程_第4张图片

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

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

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

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

推荐系统三大实例——项目代码的运行教程_第5张图片

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

推荐系统三大实例——项目代码的运行教程_第6张图片

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

推荐系统三大实例——项目代码的运行教程_第7张图片

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

推荐系统三大实例——项目代码的运行教程_第8张图片

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

推荐系统三大实例——项目代码的运行教程_第9张图片

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

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

推荐系统三大实例——项目代码的运行教程_第10张图片

注意:

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

报错: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}

设置隔离级别

推荐系统三大实例——项目代码的运行教程_第11张图片


报错:

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

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

推荐系统三大实例——项目代码的运行教程_第12张图片

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

选择登录用户:

推荐系统三大实例——项目代码的运行教程_第13张图片

选择感兴趣的领域:

推荐系统三大实例——项目代码的运行教程_第14张图片

 

为你推荐界面:
推荐系统三大实例——项目代码的运行教程_第15张图片

相关说明

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

推荐系统三大实例——项目代码的运行教程_第16张图片

推荐系统三大实例——项目代码的运行教程_第17张图片

推荐系统三大实例——项目代码的运行教程_第18张图片

图书推荐系统

实现思路

·基于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)

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

推荐系统三大实例——项目代码的运行教程_第19张图片

音乐推荐系统

实现思路

·利用网易云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的建表顺序为:

推荐系统三大实例——项目代码的运行教程_第20张图片

用户登录:
推荐系统三大实例——项目代码的运行教程_第21张图片

选择喜爱的歌手:

推荐系统三大实例——项目代码的运行教程_第22张图片

选择喜爱的歌曲:

推荐系统三大实例——项目代码的运行教程_第23张图片

为你推荐界面:

推荐系统三大实例——项目代码的运行教程_第24张图片

歌单界面:

推荐系统三大实例——项目代码的运行教程_第25张图片

歌曲界面:

推荐系统三大实例——项目代码的运行教程_第26张图片

歌手界面:

推荐系统三大实例——项目代码的运行教程_第27张图片

用户界面:

推荐系统三大实例——项目代码的运行教程_第28张图片

排行榜界面:

推荐系统三大实例——项目代码的运行教程_第29张图片

你可能感兴趣的:(python,vue.js,django)