优秀案例:基于python django的智能家居销售数据采集和分析系统设计与实现,使用混合推荐算法和LSTM算法情感分析
1 绪论
本文所研究设计的智能家居销售数据采集与分析系统主要是为了提升数据的采集效率,并且实现及时采集到的线上电商平台及线下店面的多重渠道销售数据的采集与分析,精确地进行相关的数据采集并应用先进的数据挖掘算法进行分析挖掘,取得数据中潜藏的数据价值信息,例如一些数据分析所形成的销售趋势预测结果以及一些相应的消费者画像结果等,并在后续的应用中针对企业的智能家居能够取得促进发展的目的。智能家居的销售数据分析与采集工作系统采用以上的设计方案能够使智能家居企业逐步提升智能家居产品质量,这一方面可以通过基于智能家居数据采集与分析系统的快速数据采集与数据分析提升市场变化的反应程度和对市场机会的迅速抓取,另一部分能够通过对大数据所获得的数据价值分析的结果为智能家居企业中的产品的调整及营销策略的研究提供相关的指导作用,提升企业资源的合理配置,最终能够取得竞争优势,逐步提升自身在智能家居行业的竞争地位。
1.2 国内外研究现状
1.2.1国内研究现状
在大数据环境下,电商推荐系统的研究正逐渐增多,也有很多研究开发了各种各样推荐系统的架构和算法来解决信息过剩和用户个性化的冲突。现在所涉及到的推荐系统架构一般都至少分为应用层、服务层、算法层、缓存层和存储层等多层结构,以期能利用多层结构高效地处理数据,提供相关联的推荐服务。
1.2.2国外研究现状
国外推荐系统方面面临着许多挑战,尤其是用户物品的打分数据稀疏问题。HanJie等研究指出模型基CF推荐系统预测的准确性受限于用户与物品间评分的稀疏数据,混合方法结合辅助信息和评分数据通过文档建模的手段来提高预测准确性[11]。
1.3 主要研究内容
从图1.1技术路线图可看出,本研究所做的主要工作为:基于LSTM神经网络和协同过滤算法的智能家居销售数据分析系统的具体设计与实现。其中通过需求分析确定用户智能选择产品时的痛苦环节、主要需求等,是系统设计的基础数据。通过数据需求分析确定用户表、商品表、评论表、收藏、浏览表的数据库架构,使数据库更加完善、高效。在算法设计中,采用LSTM结合Attention实现评论情感分析算法。处理商品评价信息的评论文本,挖掘出该评论中的情感倾向,以方便用户的比对,帮助用户更好地挑选合适商品。应用协同过滤与内容推荐的融合推荐算法,实现基于用户行为、商品属性等的商品推荐功能,使系统能更好地推荐商品,真正实现商品内容的推荐。除此之外,通过商品搜索、家居价格分析、商品对比、口碑词频分析等功能模块的实现,以及通过管理员后台进行商品管理、评论管理、用户管理、系统设置的后台管理,整体系统更加完善,提升了系统的灵活性和系统管理的效率。

图 1.1技术路线
2 核心技术介绍
2.1.1 Django框架技术
Django是一个PythonWeb框架,最早发布于2005年,由AdrianHolvaty和SimonWillison提出。Django的目标是简化开发复杂的网站的过程,采用MTV(Model-Template-View)结构来设计,其核心是代码复用(少重复自己,即DRY)。
2.1.2 Request爬虫技术
在智能家居销售数据分析系统的设计与实现中,通过request库对京东智能进行发起一个请求,从而获取网页内容和数据,在利用特定的网页解析技术提取出我们想要的内容。
2.1.3 MySQL技术
在智能家居销售数据分析系统中,利用MySQL存储从京东中采集来的数据进行增、删、改、查操作,但是想要实现该功能则需要进行数据表结构的建立以及定义字段的类型,设计数据库的逻辑结构和物理结构,来保障数据完整性和统一性。
2.2.1 基于内容的推荐算法
内容推荐算法依据用户的喜好历史数据找到用户的偏好内容特征后,在其他项目中发现与用户喜欢的项目相似的项来推荐给用户。

图2.1 基于内容推荐算法示意图
内容推荐算法大致流程如下,先用关键词定义物品特点,即给物品贴上标签;然后分析用户历史数据,找到用户喜欢的物品特点;再将用户喜好物品特点与商品特点进行匹配比较,推荐给用户特征最相似的物品。
2.2.2 基于协同过滤的推荐算法
我们在购物过程中,会面对各种各样的商品,很不方便选择,那么我们就会去和兴趣爱好相投的同伴,请他们为我们进行推荐,找到我们适合的商品。例2.1给出了协同过滤中推荐的过程:用户C历史喜欢的商品为a,而从用户评分矩阵上可以看到喜欢a的用户大部分也喜欢c,因此可以认为a和c在某种程度上是相似的,假设当前用户C喜欢商品a,则用户C很可能也会喜欢商品c。
表2.1 基于物品的协同过滤算法示意表格
用户/商品 | 商品a | 商品b | 商品c |
用户A | √ | √ | |
用户B | √ | √ | √ |
用户C | √ | 推荐 |
2.2.3 基于混合推荐的推荐算法
实际应用中混合推荐主要是将不同推荐算法进行混合,在一定程度上克服单一算法的不足。当数据规模增多、推荐系统常见问题发生以后,单一的推荐算法已经无法满足用户的需求。通过将不同推荐算法混合的方法,可以让每个算法在某一领域发挥其作用来弥补另外一个算法的缺点,以此来优化提升推荐的结果以达到用户需求。我们在实践中常用几种混合方法如下。
权重整合:给各种推荐策略分配特定的权重,通过对各物品的得分进行加权求和,从而生成推荐结果集.
长期短期记忆(longshort-termmemory,LSTM)作为RNN中一颗璀璨的明星,在时间序列模型中有许多必需的基本结构。它对RNN的门机制作了不少精妙的改进,解决了RNN遇到的经典长依赖问题,同时更好地捕捉了时间序列中长期变化过程。
2.4.1 开发工具
智能家居销售数据分析系统的设计与实现使用了多个开发工具,其中包括:
MySQL:能存储和管理数据,对web系统中实现数据的增删改查,并为可视化提供数据支持,起到数据引擎的作用。
PyCharm:Python程序高效的编辑及调试工具,它具备强大的整合功能,能够将各个不同的库整合在一起,另外,还提供错误定位及追踪的功能,帮助开发者快捷地解决问题。
这些开发工具的使用使系统设计开发变得更加便捷有效,实现对京东智能家居商品的采集、清理、分析、展示。通过boostrap前端的整合处理、MySQL数据库存储与维护、PyCharm开发工具,可以让开发者快捷地完成具备完整功能强大性能的数据分析系统。
2.4.2 开发环境
本项目所需的Python版本要在3.7以上,操作系统Windows11,数据库MySQL,数据库管理工具Navicat,框架采用Django,其他的为机器学习的相关库。
3 系统分析
3.1.1技术可行性
在 Windows7 或 10 操作系统上,基于python3.12版本,使用pycharm软件作为开发工具,并通过 Mysql 进行数据库存储;后台管理系统的硬件环境为 PC 机,用户只需使用任何可以联网的电脑设备,通过浏览器即可访问新闻管理系统。
3.1.2经济可行性
一方面,只要一台联网的电脑,系统管理员都可以随心所欲地进行管理,提高了工作效率,节省人力物力,只需具有一定打字的能力就可以,无需高学历。另一方面,系统的制作成本低,可在现有的PC机上使用IDEA开发工具开发。
3.1.3操作可行性
从管理角度看,只需一台普通电脑就能完成网站信息的配置、输入和更改,操作非常简便且极具可行性。
3.1.4数据来源可行性
来源电商平台的数据,京东、淘宝已经很普及了,使用也很广,有代表性。
如下图3.1系统功能图所示,系统分为用户模块和管理员模块。系统会通过python爬虫从京东商城的家居分类中采集家居商品,包括商品名称、类别、品牌、价格、评论等信息。
用户功能包括:
2、用户登录与注册:完成用户身份的验证、管理个人资料,以及保存浏览历史和个人收藏,保障用户信息安全并提供便捷的商品浏览体验。
2、搜索引擎:支持高级搜索功能,提高用户查找商品的效率与准确性。
3、家居价格分析:通过数据可视化展示价格趋势,支持用户筛选分类进行价格分析,帮助用户做出明智购买决策。
4、商品比较:通过比较商品的参数、价格以及评论等信息,协助用户更全面地了解不同商品的优点,从而做出更加明智的购买选择。
商品推荐:根据用户过去的行为和商品的特征,使用协同过滤算法,从用户间和商品间的相似性来给出商品推荐。基于用户的历史打分、历史购买行为,寻找目标用户所感兴趣的相关用户,根据相关用户的喜好来针对目标用户给出相关家居商品的推荐。
6、家居评论情感分析:利用自然语言处理,采用长短期记忆网络(LSTM)算法分析评论情感,了解不同产品的用户满意度。
7、家居口碑词频分析:统计评论中的关键词,揭示产品特色及用户关注点。
8、喜欢与收藏功能:用户可以收藏感兴趣的商品,便于商品的对比以及个性化的家居商品推荐。
管理员功能包括:
1、商品管理:维护商品信息,支持商品名称、状态和价格等信息的编辑和删除,维护商品库的准确性。
2、评论管理:维护网站良好形象,处理不合规内容,提高情感分析的准确率以及用户满意度。
3、用户管理:对用户个人信息进行管理与维护,确保系统安全、信息安全与数据完整性。
系统设置:支持系统参数配置,确保系统运行稳定与高效。
图 3.1系统功能图
除了系统本身的实用性功能,在符合基本功能前提下,要考虑到用户的主观体验性,非功能需求将发挥重要作用,非功能需求设计时要把这部分内容考虑进去。
系统的业务流程涵盖了数据的收集、数据的预处理、数据的分析与建模以及推荐结果的展示。
业务流程图如图3.2所示:
图3.2 系统业务流程图
4 系统设计
系统采用前端、中间层和数据层的三层架构设计,包括表现层、业务逻辑层和数据层,采用Django框架进行表现层的开发,同时用响应式开发保证在不同端均具有良好的显示性。系统的架构示意图见图4.1:
图4.1 系统架构图
本系统对照功能实现,用户模块也就是系统使用者拥有登录注册、数据采集、数据可视化、推荐等功能。
4.2.1 数据采集功能
数据采集模块使用网络爬虫技术对京东智能家居产品的数据、评论进行数据抓取、解析、存储。数据采集流程图如图4.2所示。
图4.2采集流程图
4.2.2 注册登录功能
用户注册及登录流程:游客注册时,在注册页面填写用户名、密码、邮箱,点击提交按钮,前端将这些注册信息发送到后端服务器,后端调用注册程序进行注册验证,如果验证成功,注册成功。具体如图4.3。
图4.3注册登录流程图
4.2.3 推荐功能
推荐:在登录完成用户成功登录后点击进入推荐界面,前端发送用户的推荐商品请求至后台服务器,后端利用商品推荐程序,程序中载入数据库中的用户推荐数据,输出推荐商品列表,将数据返回给前端页面,前端渲染后,向用户输出推荐的商品列表。推荐流程图如图4.4所示。
图4.4推荐流程图
4.2.4 数据可视化功能
可视化过程:用户成功登录系统后,进入可视化界面,前端会将用户的请求打包并传送到后端服务器。后端调用可视化服务中的相关程序,该程序从数据库中加载数据,对数据进行分词、统计等处理,生成词云、柱状图、地图等图表。生成的图表传送到前端页面,经过数据渲染后,图表将展示给用户。如图4.5所示,即为可视化流程图。
图4.5 数据可视化流程图
4.3.1 逻辑设计
根据该系统的数据库表的设计,将系统的数据种类归分为用户、京东商品信息、评论信息、收藏信息4个实体。
4.3.2 物理设计
本数据分析系统数据逻辑结构设计如下:
表4.1 用户表(userinfo)
字段名 | 类型 | 长度 | 说明 |
id | int | 0 | 用户编号(主键、自增) |
username | varchar | 255 | 用户名 |
password | varchar | 255 | 密码 |
text | 0 | 邮箱 | |
content | text | 0 | 简介 |
address | text | 0 | 地址 |
phone | text | 0 | 手机号 |
表4.2 商品信息表
字段名 | 类型 | 长度 | 说明 |
名称 | TEXT | 255 | |
价格 | REAL | 255 | |
链接 | TEXT | 255 | |
店铺id | INTEGER | 255 | |
店铺名 | TEXT | 255 | |
img | TEXT | 255 | |
评论数 | INTEGER | 255 | |
品牌 | TEXT | 255 |
表4.3 商品评论信息表
字段名 | 类型 | 长度 | 说明 |
shop_id | INTEGER | 255 | shop_id |
评论id | INTEGER | 255 | 评论id |
时间 | TEXT | 255 | 时间 |
内容 | TEXT | 255 | 内容 |
地区 | TEXT | 255 | 地区 |
用户名 | TEXT | 255 | 用户名 |
会员等级 | TEXT | 255 | 会员等级 |
评分 | integer | 255 | 评分 |
产品颜色 | TEXT | 255 | 产品颜色 |
表4.4收藏表
字段名 | 类型 | 长度 | 说明 |
id | integer | 0 | |
uid | integer | 0 | |
sid | integer | 0 |
本章节主要对系统功能的各个模块的功能进行具体设计,给出各个数据库的逻辑结构和物理结构描述以及设计数据库的表名和字段的属性。
5 基于LSTM模型的情感分析实现
本文的情感分类任务就是根据文本数据预测文本的情感倾向,情感类别分为负、中、正3类。通过构建以LSTM(longshort-termmemorynetworks)为核心模型实现情感分类。。
情感分类任务主要是利用LSTM模型对文本进行分类。LSTM是被普遍采用的递归神经网络(RNN),它能够处理包括文本在内的时序数据,具有捕捉文本中长距离依赖的能力,这对于情感分析非常重要,情感常常存在上下文,只有考虑到上下文,我们才能分析清楚其表现出来的感情色彩。
LSTM 模型的结构包括:
在输入层,文本由每个单词的 Word2Vec 向量构成,并作为 LSTM 的输入。
LSTM 层:负责处理输入文本的时序依赖。
全连接层(FC层):把 LSTM 的最终隐藏状态传送到全连接层以进行分类。
此外,采用混淆矩阵来展示每个类别各自的分类结果,如图5.1所示,采用ROC曲线来可视化模型的表现,ROC曲线是表示分类器在不同阈值下的表现情况,可直观地反应出模型的分类效果,如图5.2所示。
图5.2 混淆矩阵图
图5.3 ROC曲线图
6 混合推荐算法的设计及实现
当前常见的推荐算法都存在各自的缺陷,主要包括以下几个方面:
(1)冷启动问题:冷启动问题可以细分为用户冷启动、物品冷启动、系统冷启动。一个新用户加入系统,因为没有对他做任何操作或者交互,因此无法通过分析他的数据得知他的兴趣信息,无法对可能喜欢的内容给与他,称为用户冷启动问题。而物品冷启动问题是指一个新物品加入系统,因为用户没对他评价或者其他操作而无法得到推荐。
(2)稀疏性问题:在推荐系统的实际应用中,由于用户数量众多且物品种类繁多,用户不可能对所有物品进行操作,而相同的物品也不可能被所有用户评价。因此,与用户相关联的物品仅占所有物品总数的一小部分。由用户和物品构成的评分矩阵因此会呈现稀疏特性。这种数据稀疏性会对推荐系统的性能产生重大影响,因为协同过滤算法的基本原理依赖于用户物品评分矩阵。目前,主流的推荐算法通过减少数据维度来应对这一问题。
(3)实时性问题:用户及物品数量太多,在项目中计算相似度以及后期进行预测评分是依赖用户的历史行为进行的。因此,只能按照固定的周期更新数据生成新的推荐列表。导致推荐系统不能实现根据用户的实时行为为他推荐,严重影响用户感受。
计算用户商品评分矩阵主要运用了用户协同过滤(UserCF)和物品协同过滤(ItemCF)两种推荐技术。
6.2.1 基于用户协同过滤设计思路
用户协同过滤算法的基本思想就是:通过比较用户之间的相似度,将同目标用户类似度较高的用户所评分过的商品对目标用户进行推荐。先将数据库中的所有用户的评分信息提取出来,并将用户评分数据组织成字典保存在计算机中。用户推荐的协同过滤算法流程见图6.1,用户与商品的评分矩阵见表6.1。
图6.1 基于用户协同过滤算法流程图
表6.1 用户-商品评分矩阵
商品1 | 商品2 | 商品3 | ··· | 商品4 | |
用户A | 4 | 4 | - | ··· | 5 |
用户B | - | 4 | 2 | ··· | - |
··· | ··· | ··· | ··· | ··· | ··· |
用户C | 5 | - | 4 | ··· | 3 |
表6.2 用户相似度矩阵
用户A | 用户B | ··· | 用户C | |
用户A | 1 | 0.82 | ··· | 0.45 |
用户B | 0.82 | 1 | ··· | 0.67 |
··· | ··· | ··· | ··· | ··· |
用户C | 0.45 | 0.67 | ··· | 1 |
6.2.2 基于物品协同过滤设计思路
物品协同过滤方法基本原理:计算商品之间的相似度,通过在目标用户已经评分的商品中推荐相似的商品。
表6.3 商品共现矩阵
商品1 | 商品2 | 商品3 | ··· | 商品4 | |
商品1 | - | 15 | 8 | ··· | 10 |
商品2 | 15 | - | 5 | ··· | 3 |
··· | ··· | ··· | ··· | ··· | ··· |
商品3 | 8 | 5 | - | ··· | 7 |
表6.4 商品相似度矩阵
商品1 | 商品2 | ··· | 商品3 | |
商品1 | 1 | 0.75 | ··· | 0.45 |
商品2 | 0.75 | 1 | ··· | 0.32 |
··· | ··· | ··· | ··· | ··· |
商品3 | 0.45 | 0.32 | ··· | 1 |
图6.2 基于物品协同过滤算法流程图
6.2.3 混合推荐算法的设计思路
混合推荐算法结合用户为基础及物品为基础的协同过滤算法优势,产生更精准的推荐结果,让用户基础的协同过滤法(UserCF)利用用户间相似度来推荐其他用户对具有用户本人相似兴趣的物品;以及物品基础的协同过滤方法(ItemCF)利用物品间的相似度来推荐与其他已评价的物品类似的物品。
对于混合推荐体系,可以对两种推荐策略进行加权,根据用户的行为习惯、热门程度给两种不同的方法赋予不同权重。根据用户评分,对用户的商品进行推荐,同时用UserCF和ItemCF进行推荐并整合两种推荐的结果得到混合推荐列表。动态加权的混合推荐算法中,根据用户行为的特征,为每一个用户的推荐方法的UserCF与ItemCF的权重比例自动分配。其动态加权策略流程见图6.3。
图6.3 动态加权策略流程图
整个推荐部分算法流程图如下图6.4所示:
图6.4推荐算法流程图
7 系统实现
登录注册采用Django表单和session,结合UserMixin来完成认证。注册成功窗口前端如图7.1所示。
图7.1 用户注册页面
图7.2 用户登录页面
数据展示:在这个板块,可以通过关键词搜索特定的信息,还可以分页显示。如下图7.3所示。
图7.3 数据展示页面
7.3.1 价格分布可视化
价格分布图,它能清楚的了解不同品牌不同价格段智能生活类商品的数量所占比例,其前端的按钮会显示对应的价格类别,价格的采集依赖于后台调用数据库中相应品牌所有商品的价格,如图7.4:
图7.4 商品价格区间页面
7.3.2 地图分析可视化
地区分布密度采用地图分析功能实现,首先选择会员等级,后端查询同等级会员的地区数据,统计各城市用户人数,见图7.5。
图7.5 购买用户分布页面
7.3.3 评论数分析可视化
各品牌下各店铺评论量排名用漏斗图表示。通过前段获取用户品牌输入,并以此筛选该品牌品牌店铺所带评论,排序计评数倒叙排序,截取前20项。见图7.6。
图7.6 各品牌评论占比页面
7.3.4 类型分析可视化
饼图用于显示类型类型的分析结果(如类型为“旗舰店”“专卖店”等的品牌占比),用户单击类型关键字后,后端按店铺名字模糊匹配筛选包含关键字的记录,并统计各品牌出现频率(生成品牌-频数)。见图7.7。
图7.7 各类智能家居占比页面
7.3.5 词云分析可视化
词云分析模块将显示用户所选店铺的评论的高频词云。如图7.8。
图7.8 词云页面
7.4.1 推荐商品功能
默认推荐和协同过滤推荐两种方式推荐内容。默认推荐方式是利用随机取值,每次调用df.sample(n=4),取4家店铺作为推荐,满足新用户或空偏好用户的基础场景。动态显示页块效果如图7.9所示):
图7.9 推荐页面
7.4.2 我的收藏功能
我的喜欢通过用户主动点击标记感兴趣的品牌商店,由前端发送请求到/recommend?c=品牌&p=商店&n=s(店铺名),调用view后端get_data函数,将request.user.id与店铺ID(s)存入表tb_collect;如图7.10所示:
图7.10商品收藏
(1)用户登录测试用例,如表7.1所示。
表7.1 用户登录测试用例
序号 | 输入 | 期望结果 | 实际结果 |
1 | 写入空白符 | 警告提示 | 警告提示 |
2 | 写入正确格式的用户名、写入不符合数据库的密码 | 提示密码不符合 | 提示密码不符合 |
3 | 写入正确格式的用户名、写入符合数据库的密码 | 顺利登入系统 | 顺利进入系统首页 |
(2)用户注册用例,如表7.2所示。
表7.2 用户注册测试用例
序号 | 输入 | 期望结果 | 实际结果 |
1 | 用户名是空白符 | 警告提示用户名不合规范 | 警告提示用户名错误 |
2 | 密码是空白符 | 警告提示密码不合规范 | 警告提示密码错误 |
3 | 写入符合规范的字符 | 顺利登入系统 | 顺利登入系统 |
(3)可视化用例,如表7.3所示。
表7.3 可视化测试用例
序号 | 输入 | 期望结果 | 实际结果 |
1 | 测试柱状图生成 | 生成的柱状图与预期结果一致,包括正确的坐标轴、标签和颜色等 | 生成的柱状图,包括正确的坐标轴、标签和颜色等 |
2 | 测试饼图生成 | 生成的饼图与预期结果一致,包括正确的扇区比例、标签和颜色等。 | 生成的饼图,包括正确的扇区比例、标签和颜色等。 |
3 | 测试折线图生成 | 生成的折线图与预期结果一致,包括正确的数据点、坐标轴和颜色等。 | 生成的折线图,包括正确的数据点、坐标轴和颜色等。 |
4 | 测试表格生成 | 生成的表格与预期结果一致,包括正确翻页。 | 生成的表格,包括正确翻页。 |