《推荐系统开发实战》--高阳团
书中附赠了完整的推荐系统项目代码,包括新闻推荐系统,图书推荐系统,音乐推荐系统三个项目。这里来分享一下我运行代码的过程。
这里以新闻推荐系统为例进行配置和报错解决,音乐推荐系统和图书推荐系统的配置同理。
下图为新闻系统的项目文件,分为两个部分,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的建表顺序为:
选择喜爱的歌手:
选择喜爱的歌曲:
为你推荐界面:
歌单界面:
歌曲界面:
歌手界面:
用户界面:
排行榜界面: