基于图神经网络和协同过滤的商品推荐系统

-
-
2025-04-27

项目背景

客户要求做一个基于图神经网络和协同过滤的商品推荐系统,但是时间很赶,我只能做一个demo让他明天糊弄糊弄。数据其实没有找好,真正的模型也没开始训练,只是搭了一个简单的前后端界面。数据用的是商品推荐系统里的shopping.sql,尽管图片丢失,但是无图也是可以用的,后续考虑再加上图片。项目成品如下:

选用的技术栈是flask,而且做了api接口开发,方便客户用自己的界面进行调用。

值得一提的是,此次的数据我放在了claw cloud里——claw cloud为每一个用户提供 每月五美元 的额度,不仅可以使用devbox、数据库等,还可以部署几十款app,包括但不限于WP建站、Dify、Anki同步等实用且好玩的templates,而你所需要的只是绑定一个注册超过180天的GitHub账号!!!欢迎大家点击我的Referral Link进行注册~~

项目部署

项目写好之后,我首先考虑的是交出源码,但是担心客户使用不便,且我也不想把数据库的权限交给客户,所以我打算部署在我的云服务器上。以下是部署详细记录:

安装conda(CentOS)

# 下载安装包
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
--2025-04-27 19:54:08--  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 赋予执行权限
chmod +x Miniconda3-latest-Linux-x86_64.sh

# 安装
./Miniconda3-latest-Linux-x86_64.sh

# 填写yes同意服务条款后,初始化conda
~/miniconda3/bin/conda init

# 验证是否成功安装
conda --version

开放端口

开放端口很重要,我在控制台开放端口之后,发现在浏览器死活打不开界面,后来执行了以下两个命令才得以打开

sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

启动项目

目录结构说明

recommend-system/

├── app/

│ ├── init.py # Flask应用初始化

│ ├── api/

│ │ ├── init.py # API蓝图初始化

│ │ └── routes.py # 路由与业务逻辑

│ ├── models/

│ │ ├── init.py # 模型包初始化

│ │ ├── gnn.py # GNN模型定义

│ │ └── cf.py # 协同过滤模型定义

│ ├── utils/

│ │ ├── init.py # 工具包初始化

│ │ ├── data_loader.py # 数据加载与预处理

│ │ ├── graph_builder.py # 图结构构建工具

│ │ └── evaluator.py # 模型评估工具

│ ├── templates/

│ │ └── index.html # 前端可视化界面模板

│ └── static/ # 静态文件

├── config.py # 配置文件

├── run.py # 启动入口

├── requirements.txt # 依赖包列表

├── README.md # 项目说明文档

├── reports/ # 评估报告与图表

└── shopping.sql # 数据SQL脚本

# 创建虚拟环境
conda create -n recommend-system python=3.11

# 启动虚拟环境
conda activate recommend-system

# 安装pip
conda install pip

# 安装依赖
pip install -r requirements.txt

# 启动命令
python run.py

感兴趣的朋友可以去“推荐系统”看看(限时开放,因为暴露ip总是不太好的hh)

总结

本文只是抛砖引玉,等明天客户的反馈再进行修改,并且后续会写一两篇详细介绍一下此次项目的推荐算法。我认为这个项目还是很值得做到尽善尽美的,改成更适合生产力的技术栈之后,可以放到GitHub上与大家分享。

 

 


目录