
标题:基于Pytorch深层架构神经网络模型实现的医疗保健物品推荐系统
文档介绍:
1.绪论
1.1 研究背景与意义
1.1.1 研究背景
近年来,随着人们健康意识的不断提升以及互联网技术的普及,线上医疗保健物品的消费规模持续扩大[1]。各大电商平台如京东、天猫等均开设了保健品、医疗器械、营养食品等专门频道,商品种类数以万计。然而,面对海量的商品信息,用户往往需要花费大量时间进行筛选和比较,难以高效获取符合自身需求的推荐。传统的推荐系统主要依赖协同过滤或基于内容的过滤算法,这些方法在数据稀疏、新物品冷启动等场景下表现欠佳[2]。与此同时,深度学习技术在图像识别、自然语言处理等领域取得了突破性进展,其强大的特征学习能力为推荐系统带来了新的思路。通过构建深层神经网络,可以从物品的多维属性中自动提取高阶特征,从而提升推荐的准确性和个性化程度。因此,研究基于深度学习的医疗保健物品推荐系统具有重要的现实意义和应用价值。
1.1.2 研究目的与意义
本文的研究目的是设计并实现一个基于PyTorch深层架构神经网络的医疗保健物品推荐系统。系统需要完成从数据采集、数据预处理、模型训练到后端服务接口开发、前端可视化展示的全流程工作。具体目标包括:第一,构建一个能够基于商品价格和销量等基础特征进行推荐得分的深度神经网络模型;第二,实现一个功能完善的Web管理平台,支持用户登录认证、商品信息管理以及推荐结果的可视化展示;第三,通过模型对比实验验证深度神经网络相较于传统协同过滤方法的优越性。本研究的理论意义在于探索深度学习技术在推荐系统中的应用范式,实践意义在于为中小型电商或健康平台提供一套可复用的推荐系统解决方案,降低用户决策成本,提升平台运营效率。
1.2 国内外研究现状
近年来,随着人工智能和深度学习技术的快速发展,推荐系统在医疗健康领域得到了广泛关注和应用。国内外学者围绕药品推荐、医疗知识图谱、用户建模等问题开展了大量研究,形成了丰富的研究成果。
1.2.1 国外研究现状
国外学者在医疗推荐系统领域的研究起步较早,研究重点涵盖了基于深度学习的推荐模型、神经网络优化以及药品数据挖掘等方面。
在深度学习推荐模型方面,Sharma等[3]人提出了一种集成线性判别狼与卷积神经网络的推荐框架,用于医疗领域的疾病预测和药品推荐,通过灰狼优化器与线性判别分析的结合显著提升了预测精度。Dasgupta和Saha[4]采用Apriori算法与双向长短期记忆网络相结合的方案,基于药品评论数据进行关联规则挖掘和序列学习,实现了药品的精准推荐,模型的准确率达到了百分之九十七以上。Vianny等[5]人则利用粒子群算法优化人工神经网络的训练过程,针对大规模数据进行了预测优化,该方法可推广至药品推荐场景,有效改善了传统神经网络收敛慢和易陷入局部最优的问题。
在神经网络与药品特征学习方面,部分学者致力于通过优化算法提升深度模型的性能[6][7]。这些研究表明,将群体智能算法与深度学习相结合,能够在药品推荐任务中获得更高的预测精度和更稳定的收敛效果。国外研究普遍重视深度学习模型的优化和泛化能力,为本文构建基于PyTorch的深层神经网络提供了理论借鉴。
1.2.2 国内研究现状
国内学者在医疗推荐系统领域的研究同样十分活跃,研究热点主要集中在知识图谱构建、深度学习模型改进以及个性化推荐算法等方面。
在深度学习与神经网络推荐方面,任邵杰[8]针对医药零售领域用户行为数据稀疏的问题,提出了基于用户聚类和知识图谱的分层推荐模型。该模型首先通过RFM模型进行用户聚类,形成具有相似特征的用户群体,然后结合用户注意力机制的神经网络实现个性化推荐,最后利用知识图谱提供的药品语义信息和关联路径完成精细化的药品匹配。赵可钒[9]针对内分泌药品推荐中存在的专家经验依赖性强、信息偏差及多关键词处理低效等问题,提出了基于辅助诊断的内分泌药品推荐方法。该方法设计了去偏见标签混淆式网络和基于提示学习的特征提取网络,有效解决了疾病文本中的偏见信息和关键词耦合问题,并在内分泌系统疾病文本数据集上取得了百分之九十七以上的准确率。邓忠辉[10]针对用药推荐中特征维度高、数据稀疏以及长尾效应等问题,设计了基于二阶关系图嵌入特征增强的深度学习推荐算法,通过构建二阶关系图嵌入神经网络对用药者和药品进行编码,生成特征增强表示,在公开数据集上的评估指标优于当前先进模型。刘锦铭[11]针对连锁药店药品零售场景,提出了基于用户注意力的药品推荐算法框架,该算法在用户购买行为序列中加入注意力机制进行处理,并使用特征交叉模块捕捉用户与药品之间的交互信息,同时加入局部偏置量进一步区分用户之间和药品之间的异质性,实验证明该框架优于主流推荐算法。
在知识图谱与协同过滤融合方面,陈荣凯[12]提出了融合复杂网络节点影响力的知识图谱推荐模型,通过改进的k-shell算法识别知识图谱中的核心结构,并在RippleNet模型的基础上加入节点影响力因素,使得推荐结果更为准确。张文卓[13]构建了药品领域知识图谱,采用知识表示学习翻译模型将药品知识图谱映射到低维向量空间中计算药品间的语义相似度,并与协同过滤得到的行为相似度进行融合,有效提升了推荐精度。王瑞洋[14]提出了两种改进的混合推荐模型,一种融合药品语义和用户行为的概率矩阵分解算法,另一种基于用户画像和神经网络的混合推荐模型,有效缓解了数据稀疏性问题。仝雪[15]设计了融合改进的PPSVD方法与知识图谱技术的医疗推荐系统,通过建立患者兴趣偏好等级模型和项目正反相关判定模型,显著提升了推荐准确度。
在基于特征与深度学习结合的推荐方面,刘元喆[16]构建了疾病诊断模型,结合医疗知识图谱进行药品检索,并利用BP神经网络对药品不良反应进行预测,从而筛选出适合患者的药品。刘杰[17]针对药物重定位问题,提出了基于药物和疾病特征关联的混合推荐算法,通过构建药物-疾病特征矩阵计算药物相似度,整体推荐准确率达到百分之九十五以上。孙晓[18]将增量式频繁模式挖掘算法与深度学习模型Wide and Deep相融合,建立了混合推荐模型,实现了自动化频繁交叉特征的学习,并在医疗健康知识推荐系统中验证了算法的有效性。刘巧[19]针对精神科疾病药品推荐,将TF‑IDF和词性融合到TextRank算法中进行文本关键词提取,并采用FastText算法进行疾病分类,实现了基于智能问诊的药品推荐。
综上所述,国内外学者在医疗推荐系统领域已经取得了丰富的研究成果,深度学习和知识图谱技术成为主流方法。然而,现有研究多聚焦于药品的语义信息或用户行为特征的单一方面,且大多需要大量的用户交互数据或复杂的文本处理[20]。本文针对保健品推荐这一具体场景,采用深层架构神经网络模型,仅利用商品的价格和销量两个基础特征即可实现有效的推荐,并通过模型对比实验验证了神经网络相对于传统协同过滤方法的优越性,具有一定的创新性和实用价值。
1.3 本文主要研究内容
本文主要研究内容包括以下几个部分。
第一部分为数据采集与预处理。使用基于pyppeteer的无头浏览器爬虫,模拟京东网站的搜索操作,按照预设的关键词列表(补肾、补气、补血、养生、保健、健脾、安神补脑)爬取商品数据。对获取的数据进行清洗,删除缺失值严重的记录,去除链接和图片等冗余字段,并对价格和销量进行标准化处理。
第二部分为推荐模型的构建与评估。设计一个深层架构神经网络,包含三个隐藏层,每层20个神经元,使用ReLU激活函数和Adam优化器,以均方误差作为损失函数。将标准化后的价格和销量作为输入特征,训练模型预测推荐得分。同时实现基于K近邻的协同过滤模型作为基线对比,使用余弦相似度计算物品相似度。通过划分训练集和测试集,评估两个模型的性能并生成对比图表。
第三部分为系统设计与实现。基于Django REST Framework开发后端API,提供用户认证、商品管理、推荐查询、统计数据等接口。前端采用Vue3和Naive UI组件库,实现管理后台和数据可视化大屏。管理后台支持用户登录、用户信息维护、商品增删改查等操作;可视化大屏展示推荐结果、热门分类、平均价格趋势、最高价格趋势等图表。
第四部分为系统测试。对系统的各项功能进行测试,包括登录注册、用户管理、商品管理、推荐大屏展示等,验证系统的正确性和稳定性。
1.4 本章小结
本章阐述了医疗保健物品推荐系统的研究背景与意义,分析了国内外推荐系统领域的研究现状,指出了现有方法在保健品推荐场景中的不足。明确了本文的主要研究内容包括数据采集与预处理、模型构建与评估、系统设计与实现以及系统测试。本章为后续各章的研究内容奠定了背景基础。
2.相关技术概述
本章介绍系统中所涉及的核心算法理论,包括深层神经网络的基本原理、协同过滤算法、特征标准化方法以及模型评估指标。
2.1 深层神经网络
深层神经网络是一种具有多个隐藏层的人工神经网络,其核心思想是通过多层非线性变换,从原始输入中逐层提取更高层次的抽象特征。一个典型的全连接深层神经网络由输入层、多个隐藏层和输出层构成。每一层的神经元接收前一层的输出,通过加权求和后经过激活函数产生本层的输出。
对于第 l
层,其输出 hl
的计算公式为:
hl=flWlhl1bl#2-1![]()
其中 Wl
为权重矩阵,bl
为偏置向量,fl
为激活函数。本文在隐藏层中采用修正线性单元作为激活函数,其定义为:
ReLUx=max0,x#2-2![]()
ReLU函数具有计算简单、缓解梯度消失的优点,使得深层网络能够有效训练。输出层根据任务类型选择不同的激活函数,对于回归任务(如预测得分),通常不使用激活函数,直接输出线性值。
深层神经网络通过反向传播算法更新参数,优化的目标是最小化损失函数。对于推荐系统中的得分预测任务,常用的损失函数是均方误差:
MSE=1ni=1n(yi-yi)2#2-3
其中 yi
为真实得分,yi
为模型预测值,n
为样本数量。MSE值越小表示预测越准确。
2.2 协同过滤算法
协同过滤是推荐系统中最经典的算法之一,其基本假设是相似的用户会对相似的物品产生兴趣,或者相似的物品会被相似的用户所喜欢。协同过滤主要分为基于用户的和基于物品的两类。
本文采用的基于物品的协同过滤方法,利用物品之间的相似度进行推荐。首先需要构建物品的特征向量,然后计算两两物品之间的相似度。常用的相似度度量包括余弦相似度、皮尔逊相关系数和欧氏距离等。余弦相似度的计算公式为:
simA,B=A⋅B∥A∥∥B∥=i=1mAiBii=1mAi2i=1mBi2#2-4
其中 A
和 B
为两个物品的特征向量,m
为特征维度。余弦相似度取值范围为-1到1,值越大表示两个物品越相似。
基于物品的协同过滤在进行预测时,首先找到与目标物品最相似的 k
个邻居,然后根据这些邻居的已知得分进行加权平均,得到预测得分。加权平均的权重通常与相似度成正比。该方法不需要训练参数,但需要预计算所有物品之间的相似度矩阵,计算复杂度较高。
2.3 K近邻算法
K近邻是一种基本的分类与回归方法。在推荐系统中,K近邻常用于寻找与目标物品最相似的若干个邻居物品。其工作原理是:对于给定的测试样本,在训练集中找到与其距离最近的 k
个样本,然后根据这 k
个样本的标签进行预测。对于回归任务,通常取邻居样本标签的平均值作为预测值,或者使用距离加权平均。
距离度量是K近邻算法的关键。除了余弦相似度,欧氏距离也是常用的一种度量,其公式为:
dA,B=i=1m(Ai-Bi)2#2-5
距离越小表示样本越相似。本文在协同过滤模型中使用余弦相似度来度量物品之间的相似性,邻居数量设置为10。
2.4 特征标准化
特征标准化是机器学习和深度学习中重要的数据预处理步骤。由于不同特征的量纲和取值范围可能差异很大,直接输入模型会导致梯度下降过程中收敛缓慢,甚至影响模型的稳定性。标准化的目标是使每个特征的均值为0,标准差为1,其变换公式为:
x'=x-μσ#2-6
其中 μ
为特征的均值,σ
为标准差。标准化后的数据具有相同的尺度,使得模型能够公平地对待每个特征,提高训练效率和预测精度。本文对价格和销量两个特征进行了标准化处理。
2.5 模型评估指标
为了客观评估推荐模型的性能,需要选择合适的评估指标。本文主要采用均方误差和决定系数。
均方误差是回归任务中最常用的指标,它衡量预测值与真实值之间误差的平方的均值,对较大误差敏感。其数学表达式已在2.1节给出。
决定系数 R2
表示模型对数据变异性的解释程度,取值范围为负无穷到1,越接近1表示模型拟合效果越好。其计算公式为:
R2=1-i=1n(yi-yi)2i=1n(yi-y)2#2-7
其中 y
为真实值的均值。此外,通过绘制预测值与真实值的散点图,可以直观地观察模型的预测准确性,散点越集中在对角线附近,说明模型性能越好。
3.数据采集与预处理
3.1 数据集介绍
本文使用的原始数据来源于京东平台的保健品类商品信息。通过编写爬虫程序,按照预设的关键词列表进行搜索和采集,共获取了4050条商品记录。每条记录包含商品标题、关键词、链接、价格、销量、图片地址等字段。其中关键词分为补肾、补气、补血、养生、保健、健脾、安神补脑等七个类别,覆盖了常见的保健品功能。价格字段为浮点数,表示商品当前售价;销量字段为整数,表示商品累计评价数量或销量。部分记录的图片链接或销量字段存在缺失,需要在预处理阶段进行处理。数据集示例如图3-1所示。

图3-1 数据集示例图
3.2 数据清洗与特征工程
数据清洗的主要任务包括处理缺失值、去除冗余字段以及数据类型转换。首先,对于缺失的店铺名称字段,统一填充为“京东大药房”。其次,分析发现商品链接和图片地址字段在模型训练中不提供有效信息,因此将其删除。销量字段中存在“万”等单位字符,通过字符串替换和数值转换将其统一为整数。经过清洗后,保留的字段为id、title、keyword、price、sales。数据集的统计信息显示,价格的范围从几元到数千元不等,销量从几十到数百万不等,量纲差异较大。
为了消除不同量纲对神经网络训练的影响,对价格和销量两个数值型特征进行标准化处理。标准化采用Z-score方法,其公式为:
x'=x-μσ#3-1
其中 μ
为特征的均值,σ
为标准差。标准化后的特征均值为0,标准差为1,使得模型在梯度下降过程中能够更快收敛。标准化操作使用scikit-learn库中的StandardScaler实现,并将scaler对象保存为pkl文件,供后续预测时使用。
3.3 数据集划分
为了客观评估模型的泛化能力,将清洗和标准化后的数据集按照8:2的比例随机划分为训练集和测试集。训练集用于模型参数的学习,测试集用于最终性能评估。划分时设置随机种子random_state=42,保证实验结果的可复现性。训练集包含3240条样本,测试集包含810条样本。由于数据量相对较小,未单独设置验证集,而是通过监控训练过程中的损失值变化来判断模型的收敛情况。
4.模型构建与评估
本章详细介绍深层架构神经网络的设计、训练过程以及与传统协同过滤模型的对比评估。
4.1 模型架构设计
深层架构神经网络是一个全连接的前馈神经网络,其结构参数如下表所示。
表4-1 深层神经网络结构参数
|
层名称 |
神经元数量 |
激活函数 |
说明 |
|
输入层 |
2 |
无 |
接收标准化后的价格和销量 |
|
隐藏层1 |
20 |
ReLU |
第一层特征提取 |
|
隐藏层2 |
20 |
ReLU |
第二层特征提取 |
|
隐藏层3 |
20 |
ReLU |
第三层特征提取 |
|
输出层 |
1 |
线性 |
输出推荐得分 |
该网络包含三个隐藏层,每层20个神经元。选择三层隐藏层是因为三层网络已经具有足够的能力拟合非线性函数,同时避免了过深的网络带来的过拟合风险。神经元数量20是通过实验对比确定的,在模型复杂度和训练效率之间取得了平衡。隐藏层采用ReLU激活函数,输出层不施加激活函数,直接输出实数值作为推荐得分。
模型的损失函数采用均方误差,优化器选择Adam,初始学习率设置为0.0001。Adam优化器结合了动量法和自适应学习率的优点,能够在训练过程中自动调整学习率,加快收敛速度。
4.2 模型训练流程
模型训练的主要步骤包括:加载清洗和标准化后的数据集,划分训练集和测试集,使用批量大小为32的数据加载器迭代训练50个轮次。在每个轮次中,模型遍历全部训练样本,计算每个批次的损失并反向传播更新参数。训练过程中记录了每个轮次的平均损失,用于绘制训练损失曲线。
从训练日志得出,模型初始轮次的损失约为1.1114,随着训练的进行,损失逐渐下降,到第50个轮次时,训练损失已经降至0.0001左右,表明模型已经很好地拟合了训练数据。
4.3 协同过滤模型对比
为了验证深层神经网络模型的优越性,实现了一个基于K近邻的物品协同过滤模型作为基线对比。协同过滤模型使用余弦相似度度量物品之间的相似性,对于给定的测试样本,在训练集中寻找最相似的10个邻居,然后根据邻居的价格加权平均作为预测值。权重与距离成反比,即距离越近的邻居权重越大。
该模型无需训练参数,但需要在预测时计算所有训练样本与测试样本之间的相似度,因此预测阶段的计算复杂度较高。协同过滤模型的损失计算采用与神经网络相同的均方误差指标,训练过程中的损失值在每个epoch通过随机抽样计算,日志显示损失值波动较大,最终训练损失约为0.0002,测试损失为0.0171。
4.4 评估结果与分析
两个模型在测试集上的性能对比如下表所示。
表4-2 模型性能对比表
|
模型 |
训练最终损失 |
测试损失 |
|
深层神经网络 |
0.0001 |
0.0002 |
|
协同过滤 |
0.0002 |
0.0171 |
从测试损失来看,深层神经网络的均方误差为0.0002,而协同过滤模型为0.0171,后者比前者高两个数量级。这意味着神经网络的预测值与真实值之间的偏差远小于协同过滤模型。
训练损失对比图展示了两个模型在训练过程中每个轮次的损失值变化曲线。图中横轴代表训练轮次,纵轴代表损失值。深层神经网络模型的损失曲线从初始的1.11左右平滑下降,经过约20个轮次后趋于平稳,最终损失降至0.0001以下,曲线呈现单调递减且无剧烈波动的特征,表明模型具有良好的收敛性和稳定性。协同过滤模型的损失曲线则表现出较大的随机波动,虽然最终损失也能降至0.0002左右,但中间轮次多次出现0.007以上的损失峰值,说明该模型的预测结果不够稳定,对样本的敏感性较高。通过对比两条曲线的形态和最终数值,可以明显看出深层神经网络在训练过程中具有更优的收敛性能。

图4-1 训练损失对比图
预测散点图分别展示了深层神经网络模型和协同过滤模型在测试集上的预测值与真实值的分布情况。图中每个点代表一个测试样本,横坐标为真实值,纵坐标为预测值,红色虚线表示理想情况下的完美预测线。深层神经网络模型的散点紧密分布在红色对角线附近,大部分点的预测误差非常小,说明该模型能够较为准确地学习到价格与销量之间的非线性关系。协同过滤模型的散点分布则相对分散,尤其在中高价格区间出现了较多偏离对角线的点,部分预测值与真实值相差较大,表明基于余弦相似度的K近邻方法在捕捉特征间的复杂映射关系时能力有限。综合两个散点图的对比,深层神经网络模型的预测结果更接近真实价格,验证了其在推荐任务中的优越性。

图4-2 预测散点图
综合上述结果,深层架构神经网络在预测精度和稳定性方面均显著优于基于K近邻的协同过滤模型,因此本文选择神经网络作为推荐系统的核心算法。
5. 系统设计与实现
本章从功能设计、系统架构、数据库设计以及具体实现四个方面介绍系统的构建过程。
5.1 系统总体功能设计
系统分为前台可视化大屏和后台管理两大模块。前台可视化大屏主要面向普通用户,展示推荐物品列表、热门分类统计、平均价格趋势、最高价格趋势等信息。后台管理模块面向管理员和普通用户,包括用户登录注册、个人中心、用户管理(管理员专属)、保健商品管理等功能。系统的功能模块结构如图所示。
图5-1 系统功能模块图
5.2 系统架构设计
系统采用前后端分离的三层架构,自上而下分为表现层、业务逻辑层和数据层。表现层负责用户交互与数据可视化,业务逻辑层处理推荐算法、认证授权和业务规则,数据层负责数据存储与访问。整体架构如图所示。
图5-2 系统架构图
表现层采用Vue3框架构建,包含用户登录注册页面、个人中心页面、用户列表管理页面、保健商品管理页面以及可视化大屏页面。大屏页面通过ECharts库绘制柱状图、饼图、折线图等统计图表。表现层通过HTTP协议与业务逻辑层交互,所有请求均以JSON格式传输数据。
业务逻辑层基于Django REST Framework实现,是系统的核心部分。该层包含四个主要模块:用户认证模块负责用户的登录、注册、注销和密码修改,基于Django内置的会话管理机制;商品管理模块提供对保健商品表的增删改查接口,仅管理员有权访问;推荐算法模块加载预训练的PyTorch神经网络模型和标准化参数,接收商品的价格和销量特征,输出推荐得分并返回排序后的商品列表;统计查询模块通过数据库分组查询,提供热门分类统计、平均价格趋势和最高价格趋势等数据。
数据层包括MySQL数据库和模型文件两部分。MySQL数据库存储用户信息表和保健商品表,用户表使用Django内置的认证表结构,商品表包含标题、关键词、价格、销量等字段。PyTorch模型文件和标准化参数文件存储在服务器文件系统中,由推荐算法模块在系统启动时加载到内存,以提高推理效率。
5.3 数据库设计
5.3.1 概念结构设计
系统的数据库概念模型包含两个主要实体:用户和保健商品。用户实体具有用户名、密码、邮箱、姓名、是否为管理员、是否激活、注册时间、最后登录时间等属性。保健商品实体具有标题、关键词、链接、价格、销量、图片等属性。用户与保健商品之间不存在直接的交互关系,因为系统未收集用户行为数据,推荐完全基于商品特征。整体E-R图如图所示。
5.3.2 逻辑结构设计
根据概念模型,在MySQL中创建两张数据表。用户表使用Django内置的auth_user表,该表已经包含了所需的字段,无需额外定义,用户表的表结构如下。
表5-1 用户表
|
字段名 |
数据类型 |
约束 |
说明 |
|
id |
int |
主键,自增 |
用户唯一编号 |
|
username |
varchar |
唯一,非空 |
用户名 |
|
password |
varchar |
非空 |
密码(加密存储) |
|
|
varchar |
可为空 |
电子邮箱 |
|
first_name |
varchar |
可为空 |
姓氏 |
|
last_name |
varchar |
可为空 |
名称 |
|
is_superuser |
bool |
非空 |
是否为管理员 |
|
is_active |
bool |
非空 |
是否激活 |
|
date_joined |
datetime |
非空 |
注册时间 |
|
last_login |
datetime |
可为空 |
最后登录时间 |
保健商品表baojian的结构如下。
表5-2 保健商品表(baojian)
|
字段名 |
数据类型 |
约束 |
说明 |
|
id |
int |
主键,自增 |
商品唯一编号 |
|
title |
longtext |
可为空 |
商品标题 |
|
keyword |
longtext |
可为空 |
功能关键词 |
|
link |
longtext |
可为空 |
商品链接 |
|
price |
longtext |
可为空 |
价格 |
|
sales |
longtext |
可为空 |
销量 |
|
img |
longtext |
可为空 |
图片地址 |
商品表的id字段作为主键,由数据库自动递增。其他字段均采用长文本类型,以适应可能出现的较长内容。实际使用时,价格和销量字段会转换为数值类型进行计算。
5.4 系统实现
系统实现按照功能模块进行划分,主要包括用户认证模块、用户管理模块、保健商品管理模块以及可视化大屏模块。
用户认证模块实现了登录、注册、注销和修改密码功能。登录页面提供用户名和密码输入框,用户点击登录按钮后,前端将表单数据发送至后端认证接口。后端通过验证函数验证用户身份,验证成功后建立会话,并将用户信息返回前端。注册页面除了用户名和密码外,还要求用户确认密码,后端检查用户名唯一性后创建新用户。个人中心页面允许用户修改自己的邮箱和姓名,修改密码页面需要验证旧密码。

图5-1 登录界面图

图5-2 注册界面图
用户管理模块仅对管理员可见。管理员登录后可以在用户列表页面查看所有注册用户,支持按分页显示。每个用户行提供了编辑、重置密码和删除按钮。编辑功能可以修改用户的姓名、邮箱、管理员权限和激活状态。重置密码功能允许管理员为任意用户设置新密码,如果重置的是当前登录的管理员自己,系统会提示重新登录。删除功能会检查是否为管理员用户,防止误删管理员账户。

图5-3 管理员功能界面图
保健商品管理模块实现了对商品表的完整增删改查操作。商品列表页面以表格形式展示商品信息,支持分页。管理员可以点击新增按钮打开模态框,填写商品各字段后提交;点击编辑按钮可以修改现有商品;点击删除按钮需要二次确认后执行删除。该模块使用了通用的CRUD组件,通过传入字段配置和API路径,自动生成表单和表格,大大减少了重复代码。

图5-4 保健商品管理界面图

图5-5 新增保健商品界面图
可视化大屏模块通过读取配置文件动态加载各类图表组件。大屏页面支持深色/浅色主题切换,图表组件可以设置定时刷新间隔。推荐物品列表调用推荐接口,该接口加载预训练的PyTorch模型,对所有商品计算推荐得分并返回得分最高的前10个商品。热门分类统计通过统计接口获取按关键词分组计数的数据,使用柱状图展示。平均价格趋势通过平均价格接口获取各关键词的平均价格,最高价格趋势通过最高价格接口获取各关键词的最高价格。所有图表组件均封装了动态刷新方法,可以方便地从后端获取最新数据并更新图表。

图5-6 可视化大屏界面图
6. 系统测试
本章对系统的主要功能进行测试,验证系统是否满足设计要求。
6.1 测试目的
系统测试的目的是验证各功能模块的正确性和稳定性,确保用户能够正常使用系统的各项功能,包括用户认证、用户管理、商品管理和可视化大屏展示。通过测试发现可能存在的缺陷,为系统优化提供依据。
6.2 测试方法
本次测试采用黑盒测试方法,重点关注功能实现的正确性。测试环境为本地开发环境,后端运行在Django开发服务器上,前端运行在Vite开发服务器上。测试数据使用爬虫采集的4050条商品记录以及手动创建的几个测试用户。测试过程中记录每个测试用例的执行步骤和实际结果,与预期结果进行对比。
6.3 功能测试
测试用例一是用户登录功能测试,用来验证用户能否通过正确的用户名和密码登录系统,以及错误凭据时的提示是否正确。
表6-1 用户登录功能测试表
|
测试角色 |
前提条件 |
测试场景 |
测试步骤 |
预期结果 |
实际结果 |
|
普通用户 |
数据库中已存在用户admin,密码123456 |
使用正确用户名和密码登录 |
在登录页面输入用户名admin,密码123456,点击登录按钮 |
登录成功,跳转到首页,右上角显示用户名称 |
与预期一致 |
|
普通用户 |
数据库中已存在用户admin |
使用错误密码登录 |
在登录页面输入用户名admin,密码错误,点击登录按钮 |
页面提示“用户名或密码错误”,停留在登录页面 |
与预期一致 |
|
普通用户 |
无 |
使用不存在的用户名登录 |
输入不存在的用户名和任意密码,点击登录 |
页面提示“用户名或密码错误”,停留在登录页面 |
与预期一致 |
测试用例二是用户注册功能测试,用来验证新用户能否成功注册账号,以及注册时的校验逻辑。
表6-2 用户注册功能测试表
|
测试角色 |
前提条件 |
测试场景 |
测试步骤 |
预期结果 |
实际结果 |
|
新用户 |
用户名testuser不存在 |
注册新用户 |
在注册页面输入用户名testuser,密码123456,确认密码123456,点击注册按钮 |
注册成功,自动登录并跳转到首页 |
与预期一致 |
|
新用户 |
用户名admin已存在 |
注册已存在的用户名 |
输入已存在的用户名admin,其他信息正确,点击注册 |
页面提示“注册失败,用户已存在” |
与预期一致 |
|
新用户 |
无 |
两次输入的密码不一致 |
输入密码123456,确认密码1234567,点击注册 |
页面提示“两次密码不一致” |
与预期一致 |
测试用例三是用户列表管理功能测试,用来验证管理员能否正确查看、编辑、重置密码和删除用户。
表6-3 用户列表管理功能测试表
|
测试角色 |
前提条件 |
测试场景 |
测试步骤 |
预期结果 |
实际结果 |
|
管理员 |
以admin身份登录 |
查看用户列表 |
点击导航栏“用户管理”下的“用户列表”菜单 |
显示所有用户的表格,包含用户名、邮箱、管理员标识等列 |
与预期一致 |
|
管理员 |
以admin身份登录,存在普通用户testuser |
编辑普通用户信息 |
点击testuser所在行的编辑按钮,修改其邮箱和姓名后保存 |
修改成功,列表中显示更新后的信息 |
与预期一致 |
|
管理员 |
以admin身份登录,存在普通用户testuser |
重置普通用户密码 |
点击testuser所在行的重置密码按钮,输入新密码并确认 |
密码重置成功,提示用户即将跳转至登录页 |
与预期一致 |
|
管理员 |
以admin身份登录,存在普通用户testuser |
删除普通用户 |
点击testuser所在行的删除按钮,确认删除 |
用户被删除,列表中不再显示该用户 |
与预期一致 |
|
管理员 |
以admin身份登录 |
尝试删除管理员用户 |
点击admin所在行的删除按钮 |
提示“删除失败,不能删除管理员”,用户未被删除 |
与预期一致 |
测试用例四是保健商品管理功能测试,用来验证管理员对保健商品进行增删改查操作的正确性。
表6-4 保健商品管理功能测试表
|
测试角色 |
前提条件 |
测试场景 |
测试步骤 |
预期结果 |
实际结果 |
|
管理员 |
以admin身份登录 |
查看商品列表 |
点击导航栏“数据”下的“保健商品管理”菜单 |
显示商品表格,包含id、title、keyword、price、sales等列,支持分页 |
与预期一致 |
|
管理员 |
以admin身份登录 |
新增商品 |
点击新增按钮,在弹出的表单中填写商品信息,点击确认 |
新增成功,列表中显示新添加的商品 |
与预期一致 |
|
管理员 |
以admin身份登录 |
编辑商品 |
点击某商品行的编辑按钮,修改价格后保存 |
修改成功,列表中显示更新后的价格 |
与预期一致 |
|
管理员 |
以admin身份登录 |
删除商品 |
点击某商品行的删除按钮,确认删除 |
商品被删除,列表中不再显示 |
与预期一致 |
测试用例五是可视化大屏推荐功能测试,用来验证大屏页面能否正确展示推荐物品和统计图表。
表6-5 可视化大屏功能测试表
|
测试角色 |
前提条件 |
测试场景 |
测试步骤 |
预期结果 |
实际结果 |
|
普通用户 |
后端服务正常运行,模型文件存在 |
查看推荐物品列表 |
访问大屏页面,观察推荐物品表格 |
表格显示10个推荐物品,包含名称、功能、价格、销量 |
与预期一致 |
|
普通用户 |
数据库中有商品数据 |
查看热门分类柱状图 |
在大屏页面中找到热门分类图表 |
图表展示各关键词的商品数量分布 |
与预期一致 |
|
普通用户 |
数据库中有商品数据 |
查看平均价格趋势图 |
在大屏页面中找到平均价格趋势图表 |
图表展示各关键词的平均价格 |
与预期一致 |
|
普通用户 |
数据库中有商品数据 |
查看最高价格趋势图 |
在大屏页面中找到最高价格趋势图表 |
图表展示各关键词的最高价格 |
与预期一致 |
6.4 本章小结
本章对系统的主要功能进行了黑盒测试,设计了五个测试用例,分别覆盖用户登录注册、用户列表管理、保健商品管理和可视化大屏展示等核心功能。测试结果表明,所有功能均按照预期工作,系统的正确性和稳定性得到了验证。对于测试中发现的细节问题,已在开发过程中进行了修复。
7. 总结与展望
7.1 研究总结
本文设计并实现了一个基于PyTorch深层架构神经网络的医疗保健物品推荐系统。系统完成了从数据采集、预处理到模型训练、后端API开发、前端可视化展示的全流程工作。主要成果包括以下几个方面。
第一,使用pyppeteer爬虫采集了京东平台4050条保健品数据,并进行了数据清洗和标准化处理,为模型训练提供了高质量的数据集。
第二,构建了一个三层全连接神经网络模型,以价格和销量为输入特征,输出推荐得分。通过50个epoch的训练,模型在训练集上的损失降至0.0001,测试集上的损失为0.0002。与基于K近邻的协同过滤模型相比,深度神经网络的测试损失远低于协同过滤模型的0.0171,预测散点图也显示神经网络具有更高的预测精度和稳定性。
第三,基于Django REST Framework和Vue3开发了完整的Web应用系统。系统支持用户登录注册、个人中心、管理员用户管理、保健商品CRUD操作等功能。可视化大屏能够动态展示推荐结果、热门分类统计、价格趋势等图表,为用户提供了直观的数据洞察。
第四,通过系统的功能测试,验证了各模块的正确性和稳定性,表明系统达到了预期的设计目标。
7.2 存在的不足与未来展望
尽管系统基本实现了预期功能,但仍存在一些不足和改进空间。
在数据方面,当前只使用了价格和销量两个数值特征,未充分利用商品标题和关键词中的文本信息,也未引入用户行为数据。未来可以增加文本特征的嵌入表示,构建多模态推荐模型,进一步提升推荐效果。
在模型方面,神经网络结构相对简单,未尝试更复杂的网络结构如残差网络或注意力机制。未来可以探索更深或更宽的网络结构,以及结合用户画像的个性化推荐模型。
在系统功能方面,当前的大屏图表配置通过JSON文件静态定义,缺乏在线拖拽布局的功能。未来可以开发低代码的大屏编辑器,允许用户自定义图表位置和刷新频率。
在部署方面,系统目前运行在开发环境中,未来可以借助Docker容器化技术,结合Nginx和Gunicorn进行生产环境部署,并增加负载均衡和缓存机制,提升系统的并发处理能力。
总之,本文为医疗保健物品推荐提供了一个可行的深度学习解决方案,后续可以在此基础上不断优化和扩展,使其更加智能和实用。
网硕互联帮助中心






评论前必须登录!
注册