news 2026/8/7 6:47:15

基于机器学习思路的 用户购物行为预测与可视化大屏 全栈项目——智购先知 · 用户购物行为预测分析系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于机器学习思路的 用户购物行为预测与可视化大屏 全栈项目——智购先知 · 用户购物行为预测分析系统

智购先知 · 用户购物行为预测分析系统

基于机器学习思路的用户购物行为预测与可视化大屏全栈项目。面向电商运营、数据分析、课程设计与毕设演示场景,提供登录鉴权、三维交互大屏、全球四级地图下钻、多维 ECharts 图表、购买意向智能预测、数据与用户管理等完整能力。


目录

  1. 项目简介

  2. 系统架构

  3. 技术栈

  4. 功能模块详解

  5. 全球购物分类地图(四级下钻)

  6. 预测引擎说明

  7. 目录结构

  8. 快速开始

  9. 页面路由与权限

  10. 数据库设计

  11. 主要 API

  12. 配置与代理

  13. 使用提示与常见问题

  14. 演示账号

  15. 二次开发建议

  16. 版本信息


一、项目简介

1.1 解决什么问题

电商场景中,运营与分析人员往往需要同时回答三类问题:

  • 用户会不会买?—— 结合浏览、加购、价格、人群、品类与商品图,给出可解释的购买概率。

  • 哪里在热卖?—— 从全球到国家、省级、市级,看购物分类与 GMV 热力分布。

  • 怎么一眼看懂?—— 用 3D 模型大屏、多维图表、地图下钻把指标讲清楚。

本系统把「行为样本 → 意向评分 → 可视化决策」串成一条完整演示链路。

1.2 核心能力一览

能力说明
登录鉴权淘宝风格登录页;密码 / 手机号登录;图形验证码;JWT + 角色权限
3D 大屏Three.js 纯三维场景(购物车 / 购物袋 / 漏斗 / 魔方),无图表遮挡
全球地图一级世界 → 二级国家 → 三级省级 → 四级市级,中国走 DataV 真实边界
图表中心ECharts / ECharts-GL 多页签组合(含三维业务语义坐标)
智能预测Hybrid-Logit-kNN-v3;支持商品图上传;结果联动省份 map + 品类 3D
数据管理购物行为 CRUD、Excel 导入导出
系统管理用户角色、主题样式、SQLite 路径切换

1.3 适用场景

  • 课程设计 / 毕业设计演示

  • 数据可视化大屏 Demo

  • 电商运营分析方案原型

  • 前后端全栈练手与二次开发起点


二、系统架构

┌─────────────────────────────────────────────────────────────┐ │ 浏览器 Vue3 + Pinia + Vue Router + Element Plus │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ 3D 大屏 │ │ 四级地图 │ │ 图表中心 │ │ 预测 / 管理 │ │ │ │ Three.js │ │ ECharts │ │ ECharts │ │ Element Plus │ │ │ │ │ │ DataV │ │ GL │ │ │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │ └────────────┴────────────┴──────────────┘ │ │ Axios (/api, /uploads) │ └─────────────────────────────┬───────────────────────────────┘ │ Vite 开发代理 ┌─────────────────────────────▼───────────────────────────────┐ │ Express 5 (Node.js ESM) · 端口 3001 │ │ ┌────────┐ ┌──────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ JWT 鉴权│ │ predictEngine│ │ geoShopping│ │ Multer 上传│ │ │ └────────┘ └──────────────┘ └────────────┘ └────────────┘ │ │ better-sqlite3 │ │ server/data/shopping.db │ └─────────────────────────────────────────────────────────────┘

请求流简述:

  1. 前端登录获取 JWT,后续请求 Header 携带Authorization: Bearer <token>

  2. Vite 将/api/uploads代理到http://localhost:3001

  3. 后端按角色校验后读写 SQLite,或调用预测 / 地理数据模块返回 JSON。

  4. 中国地图地形可通过/api/geo/map/:adcode代理 DataV,再由 EChartsregisterMap注册。


三、技术栈

层级技术版本参考说明
前端框架Vue 3^3.5Composition API、单页应用
构建工具Vite 5^5.4开发服务器、生产打包
路由Vue Router 4^4.6路由守卫、按角色控制菜单
状态Pinia^4用户信息、主题配置
UIElement Plus^2.14表单、表格、上传、对话框
图表ECharts 5 + echarts-gl^5.5 / ^2.0二维/三维图表、地图
三维Three.js^0.185大屏主题模型、预测页产品孪生
HTTPAxios^1.19拦截器注入 Token、统一错误提示
ExcelSheetJS (xlsx)^0.18购物数据导入导出
样式Sass / SCSS全局深色主题变量
后端Express 5ESMREST API
数据库better-sqlite3本地文件库,零运维
鉴权jsonwebtoken + bcryptjs登录态与密码哈希
上传Multer商品图 / Excel

运行环境建议:Node.js ≥ 20.15(推荐 20.19+)。Windows / macOS / Linux 均可。


四、功能模块详解

4.1 登录与权限(/login

  • 视觉:淘宝风格布局 —— 顶部 Logo、橙色促销横幅、右侧白色登录浮层。

  • 登录方式:

    • 账号密码登录

    • 手机号 + 密码登录

    • 图形验证码校验(独立一行,验证码图约 128×42,淘宝橙色系 SVG)

    • 扫码登录为演示示意

  • 角色模型:

角色示例账号密码能力范围
管理员adminadminadmin123全部页面与系统配置
分析师analystanalystanalyst123大屏、图表、预测、数据读写
访客viewerviewerviewer123大屏 / 图表 / 预测只读

手机号示例:13800000000/admin123(对应 admin)。

路由守卫会拦截未登录访问,并按meta.roles限制管理类页面。

4.2 3D 模型大屏(/dashboard

  • 全屏 Three.js 场景,不叠加 ECharts,突出三维交互与主题叙事。

  • 四套可切换主题模型:

主题叙事重点典型交互
购物车行为总览,品类货品高度映射悬停高亮、点击查看指标
购物袋成交价值与区域轨道球光环 / 轨道动效
转化漏斗浏览 → 加购 → 下单 → 高意向瀑布/层级动画
数据魔方品类 / 渠道 / 人群多维单元脉冲、单元点击
  • 数据来自/api/dashboard/stats,与库中购物行为样本联动。

4.3 图表分析中心(/charts

多页签组合展示,覆盖运营常用与教学演示类图表,例如:

  • 大数据量面积图、缓动函数示意、阶梯瀑布图、堆叠归一化柱状图

  • 相关矩阵(热力图 / 散点)、微型折线矩阵、流式视觉映射

  • 三维散点 / 三维柱状 / 三维 + 二维结合:坐标轴为业务语义(浏览时长、价格、购买意向等),Tooltip 展示商品、品类、区域等具体字段

  • 农历日历图、中国区域等值区划 + 散点、主题河流图、象形柱图

说明:部分依赖地图的图表会正确注册 GeoJSON;避免使用无效map: 'none'阻断后续系列渲染。

4.4 购物行为智能预测(/predict

  • 输入参数(滑条 / 选项):年龄、浏览时长、价格、数量、性别、是否加购、品类、渠道、设备等。

  • 商品图上传:

    • 类型:JPG / PNG / WebP / GIF

    • 大小限制:5MB

    • 前端压缩:最长边约 1280,降低上传体积

    • 本地预览 + 后端图片头解析(宽高、格式)与视觉评分

  • 输出:

    • 购买概率、置信度、可解释特征贡献

    • 预测完成后自动展示中国省份 map 热力分布

    • 按品类切换3D 产品孪生(手机、球鞋、香水、果篮、台灯、哑铃、书堆、奶瓶等)

  • 预测记录写入predictions表,可在历史中回溯。

4.5 数据管理(/data,admin / analyst)

  • 购物行为数据分页、筛选、增删改。

  • Excel导入 / 导出(SheetJS)。

  • 深色表格样式覆盖,避免 Element Plus 默认白底。

4.6 用户管理(/users,admin)

  • 用户增删改、角色分配、手机号维护。

  • 密码以 bcrypt 哈希存储。

4.7 样式设置(/settings,admin)

  • 可配置:背景色、主题色、强调色、字体、字号、默认 3D 主题等。

  • 实时预览,持久化到system_settings

4.8 数据库设置(/db,admin)

  • 查看当前 SQLite 文件路径。

  • 切换 / 连接新库文件:自动建表,必要时初始化演示数据。


五、全球购物分类地图(四级下钻)

页面路径:/worldmap核心文件:src/views/WorldMap.vueserver/geoShopping.js

5.1 四级结构

层级含义地图地形来源业务数据
一级·世界国家热力EChartsworld.json(jsDelivr / fastly)各国购物分类指数、GMV、热门品类
二级·国家省 / 州中国:DataV100000_full;国外:示意多边形省级区域列表 + 品类柱图
三级·省级地级市中国:DataV{省adcode}_full(如广东 21 市);国外:示意城市图城市列表与购物热力
四级·市级区县 / 分区中国:DataV{市adcode}_full(如广州 11 区);国外:示意分区图区县列表与品类分布

5.2 交互说明

  1. 点击地图区域或侧栏「进入下一级」按钮进行下钻。

  2. 面包屑显示「一级·… / 二级·… / 三级·… / 四级·…」,可回退任意层级。

  3. 右侧面板展示:行为指数、热门品类、GMV、购物分类分布柱图。

  4. 中国区域名称与 DataV GeoJSONproperties.name对齐;前端另有名称归一化与缺省区域补齐,保证整图可着色。

5.3 相关接口

方法路径说明
GET/api/geo/world一级:世界国家列表
GET/api/geo/country/:code二级:国家 → 省/州(中国返回useChinaMapmapAdcode
GET/api/geo/province/:adcode三级:省 → 市(优先拉取 DataV 完整地市名)
GET/api/geo/city/:adcode四级:市 → 区县
GET/api/geo/map/:adcode中国行政区 GeoJSON 代理(供前端registerMap

中国地形优先:后端代理 DataV → 失败则前端直连 DataV CDN。国外使用buildCustomRegionGeo生成示意分区图。

5.4 品类维度

地图与侧栏统一使用八大购物分类:

数码家电服饰鞋包美妆护肤食品生鲜家居生活运动户外图书文娱母婴用品

每个区域包含:value(行为指数)、topCategorycategories[]gmv等字段。


六、预测引擎说明

核心文件:server/predictEngine.js模型标识:Hybrid-Logit-kNN-v3

6.1 思路概览

引擎并非训练深度神经网络,而是面向演示的可解释混合评分

  1. 历史先验:全库转化率、同品类转化率、性别 × 品类交叉先验。

  2. kNN 近邻:在特征空间找相似样本,按距离加权投票。

  3. 行为特征:浏览时长分桶、价格分位、加购、数量、渠道、设备等。

  4. 图片分支(可选):解析宽高与体积,评估清晰度;结合文件名 / 品类关键词做相关性加分。

  5. Logistic 融合:各因子加权后经 sigmoid 映射为购买概率,并给出置信度与贡献拆解。

6.2 典型输出字段

  • probability:购买概率(0~1)

  • confidence:置信度

  • label/ 文案结论(高意向、观望等)

  • contributions:特征贡献列表(便于侧栏解释)

  • geoDistribution:省份热力(供预测页中国 map)

  • imageAnalysis:图片质量与相关性提示(若上传)

6.3 使用建议

  • 先调参数看基线概率,再上传清晰商品图观察置信度变化。

  • 库中样本越丰富,品类 / 近邻先验越稳定;可通过数据管理页补充样本。


七、目录结构

Vue23/ ├── index.html # 入口 HTML ├── package.json # 前端依赖与脚本 ├── vite.config.js # Vite:别名、代理 /api 与 /uploads ├── README.md # 本说明文档 ├── scripts/ │ └── dev.mjs # 一键同时启动前后端 ├── src/ │ ├── main.js # 应用入口 │ ├── App.vue │ ├── api/ │ │ └── http.js # Axios 封装(Token、401 跳转) │ ├── router/ │ │ └── index.js # 路由表与权限守卫 │ ├── stores/ │ │ └── index.js # 用户 / 主题 Pinia Store │ ├── styles/ │ │ └── global.scss # 深色主题、表格与滚动条 │ ├── layouts/ │ │ └── MainLayout.vue # 顶栏导航布局 │ ├── components/ │ │ ├── Model3D.vue # 大屏交互 3D 模型 │ │ └── ProductModel3D.vue # 预测页品类产品 3D │ └── views/ │ ├── Login.vue # 淘宝风格登录 │ ├── Dashboard.vue # 3D 模型大屏 │ ├── WorldMap.vue # 全球四级地图大屏 │ ├── ChartsPage.vue # 多维图表 │ ├── Predict.vue # 智能预测 │ ├── DataManage.vue # 购物数据管理 │ ├── UserManage.vue # 用户管理 │ ├── Settings.vue # 样式设置 │ └── DbConfig.vue # 数据库路径 └── server/ ├── package.json ├── index.js # Express API 入口 ├── db.js # SQLite 初始化、建表、种子数据 ├── predictEngine.js # Hybrid-Logit-kNN-v3 + 图片分析 ├── geoShopping.js # 四级地理购物数据 + DataV 拉取缓存 ├── data/ │ └── shopping.db # 运行后生成的默认库 └── uploads/ # 上传图片目录

八、快速开始

8.1 安装依赖

# 前端(项目根目录) npm install ​ # 后端 cd server npm install cd ..

8.2 启动服务

方式 A:两个终端

# 终端 1 — 后端(默认 http://localhost:3001) cd server npm run dev ​ # 终端 2 — 前端(默认 http://localhost:5173) npm run dev

方式 B:一键脚本(根目录)

npm run dev:all

8.3 访问

浏览器打开:http://localhost:5173

使用演示账号登录后,建议按以下路径体验:

  1. /dashboard—— 切换 3D 主题,点击模型查看指标

  2. /worldmap—— 中国 → 某省 → 某市,观察四级地图与侧栏品类

  3. /charts—— 浏览各页签图表

  4. /predict—— 调参 + 上传商品图,查看概率与省份 map

8.4 生产构建

# 前端打包 npm run build npm run preview ​ # 后端生产启动 cd server npm start

生产环境需自行将静态资源与 API 同源部署,或配置反向代理(Nginx 等)转发/api/uploads


九、页面路由与权限

路径页面权限
/login登录公开
/dashboard3D 模型大屏登录用户
/worldmap全球购物分类地图登录用户
/charts图表分析登录用户
/predict行为预测登录用户
/data数据管理admin / analyst
/users用户管理admin
/settings样式设置admin
/db数据库设置admin

未登录访问业务页会跳转/login;无角色权限时提示并拦截。


十、数据库设计

默认路径:server/data/shopping.db引擎:SQLite(better-sqlite3)

10.1 主要表

表名用途
users用户账号、手机号、角色、密码哈希、头像等
shopping_behavior购物行为样本(品类、价格、浏览、加购、区域、渠道、设备、是否购买等)
predictions预测历史(输入参数、概率、置信度、关联图片等)
system_settings主题与样式键值配置
db_config当前库路径等配置

10.2 首次启动种子数据

后端首次检测到空库时会自动:

  1. 创建上述表结构

  2. 写入演示账号(admin / analyst / viewer)

  3. 写入约500 条购物行为样本(多品类、区域、渠道、设备)

  4. 写入默认主题样式

可通过/db页切换到其他.db文件;切换后会按需重建表与演示数据。


十一、主要 API

除验证码与登录外,业务接口需携带:

Authorization: Bearer <token>

11.1 鉴权与用户

方法路径说明权限
GET/api/captcha获取图形验证码公开
POST/api/login登录(账号或手机号 + 验证码)公开
GET/api/me当前用户信息登录
GET/api/users用户列表admin
POST/api/users新建用户admin
PUT/api/users/:id更新用户admin
DELETE/api/users/:id删除用户admin

11.2 购物数据与统计

方法路径说明权限
GET/api/shopping分页查询购物行为登录
POST/api/shopping新增admin / analyst
PUT/api/shopping/:id更新admin / analyst
DELETE/api/shopping/:id删除admin / analyst
GET/api/shopping/export导出 Excel登录
POST/api/shopping/import导入 Exceladmin / analyst
GET/api/dashboard/stats大屏 / 图表统计聚合登录

11.3 预测

方法路径说明权限
POST/api/predict行为预测(可 multipart 附带商品图)登录
GET/api/predictions预测历史列表登录

11.4 地理地图(四级)

方法路径说明权限
GET/api/geo/world一级世界数据登录
GET/api/geo/country/:code二级国家下级登录
GET/api/geo/province/:adcode三级省级下级登录
GET/api/geo/city/:adcode四级市级下级登录
GET/api/geo/map/:adcode中国行政区 GeoJSON 代理登录

地理接口常见返回字段:listlevelIndexlevelLabeluseChinaMapmapSourcemapAdcodegeo(国外示意地形)。

11.5 系统配置

方法路径说明权限
GET/api/settings读取样式配置登录
PUT/api/settings更新样式admin
GET/api/db-config当前数据库路径admin
POST/api/db-config切换数据库路径admin

十二、配置与代理

12.1 端口

服务默认端口
前端 Vite5173
后端 Express3001

12.2 Vite 代理(开发)

vite.config.js中将以下路径转发到后端:

  • /apihttp://localhost:3001

  • /uploadshttp://localhost:3001

因此浏览器只需访问前端源,无需单独处理 CORS(开发态)。

12.3 常用 npm 脚本

位置命令作用
根目录npm run dev仅前端
根目录npm run dev:all前后端同时启动
根目录npm run build前端生产构建
根目录npm run server启动后端
servernpm run dev/npm start后端开发 / 生产

十三、使用提示与常见问题

  1. 地图加载失败中国 / 世界地图依赖在线资源(DataV、jsDelivr)。网络受限时:

    • 检查能否访问geo.datav.aliyun.com

    • 优先使用后端/api/geo/map/:adcode代理

    • 国外层级会回退到示意多边形,不影响演示主流程

  2. 后端进程异常退出(Windows 下偶见超大 exit code)多为手动结束旧进程或端口占用后重启,属于运维操作结果,不一定是业务代码错误。确认Server running at http://localhost:3001即可。

  3. 图片预测建议上传清晰商品主图;前端会压缩。上传可提升视觉特征权重与置信度文案。

  4. 表格白底 / 滚动管理页已覆盖深色表格样式;长内容页面使用.page-scroll,可用页面滚动条查看全部内容。

  5. Node / native 模块安装失败请升级 Node 到 20.15+,删除node_modules后重装;better-sqlite3需能完成本地编译或使用预编译包。

  6. 验证码过期登录前请先获取验证码;过期或输错会返回明确错误信息,刷新验证码后重试。


十四、演示账号

角色 用户名 密码 手机号 管理员 admin admin123 13800000000 分析师 analyst analyst123 13700000000 访客 viewer viewer123 13900000000

仅用于本地演示。正式环境请修改默认密码,并更换 JWT Secret(server/index.js中的JWT_SECRET)。


十五、二次开发建议

目标建议切入点
调整预测逻辑 / 权重server/predictEngine.js
扩充地理区域或品类server/geoShopping.js
新增大屏主题模型src/components/Model3D.vue
新增图表页签src/views/ChartsPage.vue
改登录视觉 / 验证码src/views/Login.vueserver/index.jscaptcha
改主题变量与表格样式src/styles/global.scss/settings
增加业务表字段server/db.js建表与种子逻辑,再同步前端表单

扩展四级地图时,优先保证GeoJSON 区域名与接口list[].name一致;中国区域尽量继续走 DataVadcode


十六、版本信息

内容
项目名称智购先知 · 用户购物行为预测分析系统
前端版本1.0.0
预测模型Hybrid-Logit-kNN-v3
地图能力四级下钻(世界 / 国家 / 省级 / 市级)
许可证仅供学习与演示使用

如有问题,请先确认前后端均已启动、Node 版本符合要求,并按第十三节排查网络与权限问题。

https://github.com/zhangsansh/Three.js-ECharts-SQLite-map-Vue3.githttps://github.com/zhangsansh/Three.js-ECharts-SQLite-map-Vue3.git

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 6:45:35

Linux线程互斥锁原理、死锁避免与性能优化实战

1. 从一次数据混乱说起&#xff1a;为什么需要线程互斥&#xff1f;最近在调试一个后台服务时&#xff0c;遇到了一个让人头疼的问题。这个服务负责处理用户上传的图片&#xff0c;生成缩略图并更新数据库中的文件信息。逻辑很简单&#xff1a;一个主线程接收任务&#xff0c;然…

作者头像 李华
网站建设 2026/8/7 6:42:26

AP-2118A-S-PBF 电子板

AP-2118A-S-PBF 电子板是一款用于工业或通信设备中的关键电路组件&#xff0c;以下为其核心特点与应用领域概述。产品特点 采用高品质元器件&#xff0c;确保长期稳定运行。 具备良好的抗干扰设计&#xff0c;适应复杂电磁环境。 支持多种信号接口&#xff0c;方便与系统其他模…

作者头像 李华
网站建设 2026/8/7 6:41:52

企业级AI Agent实战:从WorkBuddy与ClawPro构建全栈提效体系

1. 从“单点智能”到“体系化提效”&#xff1a;企业AI Agent的必然演进如果你最近在关注AI如何真正落地到企业日常工作中&#xff0c;大概率会频繁听到“AI Agent”这个词。从去年底开始&#xff0c;各种基于大语言模型的智能体Demo层出不穷&#xff0c;它们能帮你写周报、查资…

作者头像 李华
网站建设 2026/8/7 6:41:18

Python开发中常见错误与调试技巧分享

写这段代码的人&#xff0c;往往在几周后看着自己的异常堆栈一脸茫然。真正的调试不是从报错那一刻才开始的&#xff0c;而是从你写下第一行print之前就已经决定了。Python的容错性让你能快速写出“能跑”的代码&#xff0c;但也正是这种宽容&#xff0c;让你在不知不觉中埋下了…

作者头像 李华
网站建设 2026/8/7 6:31:40

ADC信噪比与过采样技术:从原理到工程实践

1. 从“听不清”到“听得清”&#xff1a;为什么ADC的信噪比如此重要想象一下&#xff0c;你正在一个嘈杂的餐厅里&#xff0c;试图听清对面朋友说的话。背景的喧闹声、餐具碰撞声、邻桌的谈笑声&#xff0c;都在干扰你获取清晰的信息。这时&#xff0c;你可能会下意识地凑近一…

作者头像 李华
网站建设 2026/8/7 6:31:11

eNSP安装与排错全攻略:从依赖原理到稳定搭建虚拟网络实验室

刚接触网络设备模拟&#xff0c;很多人第一反应是去找个“一键安装包”&#xff0c;指望下载、双击、下一步就能搞定一切。直到你点开 eNSP&#xff0c;看到那一长串的依赖列表——VirtualBox、WinPcap、Wireshark&#xff0c;还有各种驱动——才意识到&#xff0c;这根本不是装…

作者头像 李华