版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[15]。相关技术概述Python相关技术PyCharm软件介绍在大数据分析领域,PyCharm的表现卓越。利用它搭建的大数据分析环境非常便捷,在这个过程中能够融合多种功能强大的数据分析库。例如NumPy,它为高效数值计算提供了支持。还有Pandas,可用于灵活处理和分析各类数据。便于对海量数据进行清洗、处理和分析。借助其智能代码补全与语法检查功能,开发人员能高效编写复杂的数据处理逻辑,快速应用机器学习算法进行数据建模和预测分析。同时,PyCharm与可视化库无缝对接,可将分析结果以直观的图表形式呈现,帮助用户洞察数据背后的规律。对于网络爬虫开发,PyCharm同样提供有力支持。其完善的代码编辑功能使编写爬虫代码更加高效,智能提示与错误检查确保代码的准确性。开发人员可以利用其相关库实现网页的爬取,信息的解析等。PyCharm支持异步爬虫技术的开发,通过优化代码结构,让爬虫能够更快速地抓取网页信息,提高数据采集效率。无论是大数据分析还是网络爬虫开发,PyCharm凭借其强大的功能和易用性,成为众多开发者的首选工具,极大地提升了开发效率和质量。Jupyternotebook在数据探索阶段,它允许数据分析师交互式地输入代码片段,并立即查看结果。例如,使用Python的Pandas库读取数据集后,能迅速通过输入代码查看数据的基本信息,如前几行数据、数据的形状、列的数据类型等,从而对数据有初步的了解和直观的感受,这种即时反馈的交互性极大地提高了探索效率。对于数据的噪声清理和各种处理,它提供了灵活的环境。可以方便地编写代码来处理数据噪声,进行数据的标准化、归一化等操作,且每一步操作的结果都能实时呈现,便于及时发现问题并调整代码。在数据分析过程中,它支持多种数据分析库的集成,诸如用于开展统计分析的NumP与SciPy,以及用于实现数据可视化的Matplotlib和Seaborn等工具。分析能够在Notebook环境中实现流畅的操作切换。先进行数据的统计计算,然后将结果可视化展示,以更清晰地呈现数据特征和趋势,帮助做出更准确的分析结论。此外,JupyterNotebook还便于记录分析思路和过程,其markdown单元格可用于添加注释、说明和分析步骤的记录,使得整个数据分析过程具有良好的可读性和可复现性,方便团队成员之间的交流与协作,也为后续的回顾和优化提供了清晰的文档依据。Pandas库介绍在Python的语言体系中,Pandas库是专用于数据处理与分析的强大利器。在如今蓬勃发展的大数据领域,它扮演着极为重要的角色。Pandas库为大数据的各项操作量身定制了高效且便捷的数据结构,极大地提升了数据处理与分析的效率与质量。尤其是DataFrame,能将大规模的结构化数据以表格形式呈现,使得数据的筛选、排序、聚合等操作变得简单直观。例如,在处理海量的电商交易数据时,可以通过Pandas快速选取特定时间段、特定地区或特定商品类别的交易记录,并对销售额、购买量等数据进行统计分析。Pandas具备出色的数据读取和写入能力,能够轻松处理来自不同数据源(如CSV、Excel、SQL数据库等)的大数据集,也可以将处理后的结果保存为各种常见格式,方便数据的共享和进一步利用。在数据清洗方面,它提供了丰富的函数和方法来处理缺失值、重复值和异常值,确保大数据的质量和准确性。同时,Pandas与其他大数据处理框架(如ApacheSpark)和分析库(如NumPy、Matplotlib)有良好的兼容性和集成性。通过Pandas库处理后的数据可以根据需求转换成不同的格式,然后利用其他大数据框架和库实现对数据的其他处理。如使用Matplotlib库对数据进行可视化分析。使用Spark对数据进行并行处理。从而为大数据的分析和洞察提供全方位的支持,助力企业和研究人员从海量数据中提取有价值的信息。机器学习相关技术介绍决策树模型介绍决策树模型拥有一种与人类决策过程相似的结构,它以树状形式呈现。在这个结构里,各个树的内部节点代表着特定的特征或属性,每一个分支体现了一条决策规则,而每个叶节点则对应着一个类别或者预测结果。这种结构赋予了决策树高度的直观性,使其便于使用者领会和阐释。在预测方面,决策树模型属于借助树状架构来开展决策行为的一类预测模型。其运作方式是对数据所呈现的特征予以持续细分。最终构建出一种形似流程图的树形架构。在此架构里,各内部的节点均为针对某一特征所开展的测试;分支意味着测试的输出结果;而叶节点分别对应着类别标签或者预测数值。其构建过程遵循递归划分原则。以信息增益为例,决策树在每一步划分时,会选择能使信息增益最大化的特征进行分裂,目的是让划分后的子节点所包含的数据纯度更高,从而使模型能够更准确地区分不同类别。决策树模型的优势显著,它具有直观易懂的特点,决策过程可以可视化展示,便于理解和解释。同时,对数据的要求不高,无需对数据进行复杂的预处理,也能处理多分类问题。在实际应用中,决策树广泛用于农业,工业等领域。梯度提升树模型介绍梯度提升树是一种基于决策树的集成学习算法,它通过迭代训练多个弱学习器,结合梯度下降优化损失函数,逐步修正预测误差,在分类、回归任务中表现优异,尤其擅长处理结构化数据,是数据科学竞赛的常用模型。梯度提升树主要用于回归和分类任务。其核心观念为采用迭代手段,逐步搭建多个弱学习器,进而将这些弱学习器整合,构建出一个预测能力强劲的模型。在每次迭代进程里,新产生的决策树所拟合的对象,是此前所有模型预测的值与真实的值间的残差。这里的“残差”可以理解为模型尚未捕捉到的信息,通过不断拟合残差,模型能够更准确地逼近真实值。例如,在预测房价时,第一个决策树对房价进行初步预测,得到的预测值与实际房价之间存在误差,第二个决策树则针对这个误差进行学习,后续决策树以此类推。梯度提升树的优势突出。它能有效处理非线性问题,对复杂数据有很好的拟合能力。通过迭代优化残差,模型的预测精度较高,泛化能力也较强。而且,它对缺失值和异常值有一定的容忍度,无需复杂的数据预处理。在实际应用中,梯度提升树在数据挖掘、机器学习竞赛、金融分析等领域表现卓越。比如在金融风险评估中,利用梯度提升树对客户的信用数据进行分析,能够精准评估客户的信用风险等级,为金融机构的信贷决策提供重要依据。随机森林模型介绍随机森林模型属于集成学习算法的范畴,由众多决策树共同构成。它以Bagging(自助聚合)理念为依托,从原始训练数据集中,使用有放回抽样的方式,随机抽取出多个样本子集。之后,对每个样本子集分别构建决策树模型,最后将这些模型的预测结果进行整合,从而得出最终的结论。与单个决策树不同,该模型在构建棵决策树时,不仅仅会使用随机抽样方法对样本进行处理,还会对特征进行随机选择。这使得每棵决策树都具有一定的差异性,避免了过拟合问题。在预测阶段,分类任务通常采用多数投票法,回归任务则一般取所有决策树预测值的平均值作为最终结果。此模型具有很多优点。它的泛化能力强,对降低模型的方差有很强的效果,提高预测的准确性和稳定性。对数据的遗漏与异常也有较好的容忍度,无需复杂的数据预处理。此外,随机森林还能对数据特征进行评估,进行排序,帮助分析数据中各特征对结果的影响程度。在数据挖掘、自然语言处理等领域,随机森林都得到了广泛应用,展现出强大的性能。数据来源与处理数据来源与获取在进行数据分析之前,需要进行数据的采集。在本节中进行的是淘宝的化妆品数据的获取。在爬取前要先设计爬取思路。本次使用Python语言进行数据爬取。因为淘宝是动态网站,爬取难度大。本文使用Requests库来进行爬取。爬取思路如下图3-1所示:图3-1爬虫思路设计图由于淘宝的反爬机制十分完善,存在MD5加密,所以需要先将加密破解再进行数据爬取。之后设置需要爬取页面的请求头和参数,使用get函数发送访问请求,获取响应文本。由于获取到的淘宝响应文本为json字符串数据,有许多无用信息。在本文中选择先将响应文本转换为字典,然后将有用的信息提取出来。再构建一个新的字典键。最后将此字典转换为CSV文件。爬取步骤如下:此次爬取使用谷歌浏览器,因为其强大的开发者工具可以为数据爬取提供助力。在爬取开始前需要先确定MD5加密的位置。首先先使用谷歌浏览器打开淘宝,然后使用手机扫码登陆。在搜索栏中键入关键字,输入关键字后右击鼠标打开谷歌浏览器的检查功能,点击Network。之后点击搜索按钮获取页面信息,如下图3-2所示。图3-2Network获取网页信息截图在进入Network界面后在左侧的搜索栏中输入爬取内容的起始商品信息,进行商品信息过滤。找到疑似MD5的加密源代码处,在疑似加密处打上断点,之后点击淘宝的下一页,让淘宝页面跳转。当其运行至真正的加密处时页面会停顿,源代码界面会跳转到停顿处,由下图3-3可以看出eM为此网页的MD5加密处。可看出主要由eM由em.token,eE,eS,ep.data组成,经过几次查看可发现eS为一固定值,eE为时间戳,ep.data为商品信息,em.token为一变化值。图3-3寻找MD5加密处截图了解了此网页的MD5加密结构后就可以使用hashlib模块进行MD5的破解。本次爬取只需要在爬取前将em.token值使用如上图3-3所展示的方式将其值获取出来,然后使用hashlib模块进行破解就能得到MD5的值。破解MD5密码的关键代码如下图3-4所示,图3-4破解MD5加密关键代码截图接下来根据开始设计的爬虫思路将代码编写出来,运行代码。运行效果如下图3-5所示。图3-5代码运行效果截图由于淘宝的反爬措施,cookie与MD5加密中的em.token是不断变化的,所以每次只能爬取少部分信息,需要对淘宝进行多次的爬取。本小节实现了利用大数据技术对本文所需数据的爬取。数据清洗与整合数据的清洗与整合选用JupyterNotebook。在数据爬取完成后所获得的初始数据不能直接进行数据分析。因为数据中不可避免的会存在许多噪音。首先查看爬取数据的信息,由下图3-6所示,本次爬取一共爬取了8个商品信息。初始数据一共有20240条。每个信息列中都不存在空值。图3-6初始数据信息查看截图由于淘宝存在反爬机制,进行了多次数据爬取。数据不可避免的存在重复值,因此必须对数据重复值进行清理。在此本文使用Pandas库中的数据处理方法,先将数据重复值删除然后重新分配索引。具体步骤如下图3-7所示。图3-7数据去重代码截图在未去除重复值之前初始数据一共20240条,去除重复值后剩余12833条数据。去重后数据效果如下图3-8所示。根据图片可以看出销量列存在异常值。图3-8数据去重效果截图由刚开始的数据信息查看可以直观地看出数据的原价,售价以及销量的数据类型为object类型,不利于本文接下来的数据分析,所以要先将这三个特征的数据类型进行转换。因为销量只能为整数,所以考虑将销量转换为int类型。原价和售价存在小数,则考虑将原价与售价转换为float类型。在数据中销量列存在着异常值,不能直接转换为int类型,需要先去除这些干扰字符。在此本文使用字符串的替换方法,将数据中的异常符号和字符串替换成合适内容。如下图3-9所示。图3-9销量列异常值处理方法截图代码运行后处理效果如下图3-10所示,可以浅显看出异常值已经被处理。图3-10销量列异常值处理效果截图在数据具备转换条件后开始对销量,原价,售价这三个列的数据类型进行转换,转换代码如下图3-11所示。图3-11数据异常值转换代码截图数据转换效果如下图3-12图所示,可以看出本数据中的原价,售价和销量列已经转换为所需的数据类型。数据异常值处理结束。图3-12数据异常值转换效果截图在初始数据处理完毕后先将数据存入毕业论文数据.csv中,接下来要思考如何将获取的数据进行机器学习处理。首先要将爬取到商品进行分类,本文根据标题中的关键词进行分类,如下图3-13所示,使用字典将关键字和种类分别定义,然后在数据中加入新的列叫种类来存放数据的种类分类。图3-13商品部分分类信息截图在此过程中发现了一些数据噪音,这些数据与本文的研究无关,推断是淘宝在推荐搜索产品时会推荐其他产品导致数据爬取时混入数据。如下图3-14所示,这些都为噪音数据。图3-14噪音数据部分信息截图将这些噪音数据进行删除,代码如下图3-15。图3-15噪音数据删除截图将处理好的数据存入毕业论文数据1.csv中。为了确保分类过程中将所有的数据都进了分类,需要检查种类列是否存在空值,若存在空值则再在字典中填入合适的键值对,若不存在空值则结束本次数据处理。如图3-16种类列不存在空值。所有数据都完成了分类。图3-16种类列空值查看截图在数据中增加特征值的方法都是利用关键词判断该商品是否符合以上特征,然后依据判断键入关键字。在本部骤中展示的是是否补水、是否美白、是否淡斑、是否控油、是否抗皱、是否提亮、是否紧致、是否专注干皮、是否专注油皮、是否专注痘肌、是否专注敏感肌列的添加效果。如下图3-17所示。图3-17特征增加截图对发货地区的处理,首先要了解发货地是否为海外产品,其次要了解货物的发货方位。先进行进行的是否为海外产品列的增加,如下图3-18所示。将发货省份不属于中国的产品找出,之后进行标号,属于海外产品标1,不属于标0。图3-18是否为海外产品列增加截图之后对发货省份进行细分,将产品发货的省份具体方位进行标注,分为海外,港澳台,东部沿海,中部地区,西部地区,东北地区,南部沿海。图3-19发货地区列增加截图之后使用数字对其进行表示,增加一列名为发货地区标号,便于后续算法的构建。效果如下图3-20所示。图3-20发货地区标号列增加截图商品店铺的处理方法也是先根据店铺中的关键字进行种类的分类,之后对店铺类型进行标号,效果如下图3-21所示图3-21店铺分类列增加截图之后将分类使用数字进行表示,效果如下图3-22所示。图3-22商品分类标号列增加截图由于本数据种类非常多,一共有30个种类,所以使用字典将种类列的信息映射至种类标号列。如下图3-23所示。使用这种方法完成对店铺分类标号和发货地区标号的增加。图3-23种类标号信息截图增加完列名后将数据存储到毕业论文数据2.csv中。数据展示如下图3-24所示。在此数据中已经没有数据噪音,可以借助此数据进行数据分析。图3-24特征增加完成截图另外在毕业论文数据2.csv中增加一列差价列,用于存储原价与售价之间的差值。如图3-25所示。图3-25差价列增加完成截图最后删除机器学习算法不会用到得列将需要的数据存入毕业论文数据3.csv文件中。最终效果如图3-26。最终数据量为12132条。图3-26机器学习使用数据展示截图数据可视化结束了数据的爬取后本节开始对数据进行可视化,初步了解数据情况。首先将数据导入,然后查看数据最大,最小的销量以及售价。如下图3-27所示。图3-27数据基本信息展示图从上图可知,化妆品的销量范围为1至1000000,售价范围为0.99至4510元。可知化妆品的销量与售价的最低,最高值差异很大。再查看各发货地区的化妆品销售量总量情况。为了便于观察化妆品发货地的销售量总量差异,使用柱状图进行可视化。关键代码如下图3-28所示。图3-28不同发货地区商品数量可视化代码截图可视化结果由下图3-29所示,化妆销售量最多的地区是东部沿海地区,其次是中部地区。港澳台的地区化妆品的销售量最少。化妆品销售呈现出巨大的地域差距,东部沿海地区是化妆品销售的主要地区。图3-29不同发货地区商品数量分布图之后查看化妆品总销量在前10的省份。为了从多维度对比各省份化妆品总销售量情况,使用雷达图。关键代码如下图3-30所示图3-30销售量排名前10省份可视化代码截图可视化结果如下图3-31所示,在所有省份中广东省的化妆品销售数量最多,销售量远超接下来的浙江,上海,江苏,安徽等地,且这些地区大部分为东部沿海地区。图3-31销售量排名前10省份雷达图再来查看本数据化妆品的7种功能的数量对比,为了体现各功能占比的情况使用饼图进行可视化。关键代码如下图3-32所示。图3-32各功能数量占比可视化代码截图可视化结果如下图3-33所示,所有功能中提亮的功能售卖最多,其次是补水,控油,美白,控油。售卖最少的功能是淡斑。紧致和抗皱功能售卖占比也相对较少。图3-33各功能数量占比图之后查看各化妆品功能的平均价格,为了能快速查看数据的变化趋势找出化妆品功能中平均价格最高和最低,使用折线图。关键代码如下图3-34所示。图3-34各功能平均价格图关键代码截图可视化结果如下图3-35所示,可看出价格最高的是抗皱,最低的是提亮。本图直观反映不同护肤功能的市场定价策略,抗皱、紧致这类针对抗衰需求的功能,因消费者对功效期望高、研发成本大,定价普遍更高。而补水、美白等基础功能,价格相对平价。图3-35各功能平均价格图再来查看各化妆品功能的平均销量对比情况,为了让效果更直观,选用柱状图,关键代码如下图3-36所示。图3-36各功能平均销量对比图关键代码截图可视化结果如下图3-37所示,可看出紧致,抗皱,控油,淡斑的平均销售量较高,顾客对这几类化妆品功能比较喜爱。图3-37各功能平均销量对比图下面查看本次爬取的所有商品所展示的词云图。词云图能反映出所爬取的化妆品中出现最多的关键字。代码如下图3-38所示。图3-38词云图代码截图可视化结果如下图3-39所示。可以看出商家售卖的商品功能主要为保湿,滋润,防水,防汗,提亮肤色这些。这些从侧面也展示了市场化妆品的销售情况。图3-3商品标题词云图从可视化中可看出化妆品销售量最多的地区是东部沿海地区,销售量最多的省份是广东省。在7个功效中售卖最多的功效是提亮,但卖得最好得是紧致、抗皱。且有这两种功效的化妆品的平均价格也远超有其他功效的化妆品。可看出顾客对紧致,抗皱这两种化妆品功效追求较高。对其他功效如补水,美白,提亮等虽售卖数量较多,但需求量不如紧致,抗皱,淡斑和控油。机器学习模型构建与实现变量的选择因变量的选择本节开始进行机器学习算法中因变量的选择。正确选择因变量是确保研究有效性的关键步骤。在本数据中销量列是最能体现顾客购买行为的结果,先选择销量作为因变量。为了避免因变量存在偏态问题影响机器学习模型的精确率和稳定性,先做销量的概率直方图及概率密度曲线。关键代码如下图4-1所示。图4-1绘制概率直方图及概率密度曲线关键代码截图效果如下图4-2所示,可看出商品销量的密度分布极不均匀,呈现右偏分布。图4-2销量概率直方图及概率密度曲线展示为了解决数据偏态问题,本文对因变量采取取对数的方法。先将因变量取对数,然后存入数据毕业论文数据3.csv中,再删除销量列。关键代码如下图4-3。图4-3增加对数销量列关键代码截图数据处理效果如下图4-4所示。可以看出本数据除列名外已经没有文字信息,不会对算法进行干扰,可以直接用于机器算法的建立与分析。图4-4用于机器学习算法数据展示截图完成了销量列的处理,接下来查看对数销量的概率直方图及概率密度曲线的绘制情况。如下图4-5所示。图4-5对数销量概率直方图及概率密度曲线可看出对数销量数据分布较均匀,大致呈现正态分布,成功解决商品销量的偏态问题。本文中的因变量改换为对数销量。特征值的选择在上一节中本文完成了因变量的选择,接下来进行特征值的选择。首先先查看数据的列名信息如下图4-6所示。一共有19条数据信息。图4-6数据信息截图根据上图可以看出除对数销量外其他信息都会对销量造成影响。每一个列名都能作为机器学习模型的特征值。特征值的具体类型和补充如下表4-1所示。表4-1特征值选取说明变量名称类型补充变量名称类型补充是否补水定性变量0:否,1:是是否专注油皮定性变量0:否,1:是是否美白是否淡斑是否控油是否抗皱是否专注敏感肌是否提亮是否紧致是否专注干皮定性变量定性变量定性变量定性变量定性变量定性变量定性变量定性变量0:否,1:是0:否,1:是0:否,1:是0:否,1:是0:否,1:是0:否,1:是0:否,1:是0:否,1:是是否专注痘肌是否海外产品店铺分类标号发货地区标号种类标号原价售价差价定性变量定性变量定性变量定性变量定性变量定量变量定量变量定量变量0:否,1:是0:否,1:是使用0-5分类使用0-6分类使用0-29分类无无无模型选择与训练决策树模型建立与分析决策树模型的理论介绍在本节中需要先进行决策树模型的建立。本节模型借助Python语言实现。选择构建决策树模型的目的是展现特征的重要性排名,从侧面展现影响大众购买行为的因素。在构建决策树回归模型前,要先明确回归树的划分准则。在决策树回归中,均方误差(MSE)是最常用的节点划分准则。该准则的目的是为了找到一个特征和划分点,让划分后的子节点的所有均方误差相加值最小。节点均方误差的计算公式为 (公式4-1)其中S表示当前节点包含的样本集合,|S|表示S中的样本数量,yi是样本i的真实目标值,是样本集合S中所有样本真实目标值的平均值。之后需要计算划分后的均方误差,如果只将集合S划分为S1与S2其公式为 (公式4-2)本模型的重点是计算各特征的总重要性,进行特征重要性的排名,因此需要先计算单个特征的贡献值,其公式为 (公式4-3)在公式4-3中n表示节点编号,|Sn|是节点n中的样本数量,|Stotal|是整个数据的样本数量,MSE(Sn)是节点n划分前的均方误差,MSEsplit是节点n划分后的均方误差。在单个节点的贡献值计算完成后,还需要对各特征进行总重要性的计算。在这里,需要先将某个特征的贡献值之和算出来,然后进行归一化处理。其公式如下 (公式4-4)在此公式中j表示某个特征,Nj是使用特征j进行划分的节点集合,m是特征的总数。决策树模型的代码设计了解完模型的构建原理后需要将其转换为代码,实现模型结果的可视化,便于对模型结果进行分析。本模型代码需涵盖的功能有数据的读取和处理,特征和目标变量的分离,训练集的划分,模型的建立和可视化的展示。根据之前的因变量和特征值的选取原则,将特征值和因变量进行分离后处理特征值中的类别型数据。之后开始进行数据的分割。因为数据量为12132条,数据量中等,本文将测试集定为数据总量的20%。在机器算法中普遍将测试集与训练集按照80%与20%的标准进行划分,在本模型中20%的测试集已经足够模型进行检验。为了保证结果可复现,在代码中设置了随机种子,默认值为42。在模型建立阶段中设置了超参数网格。具体数值如下图4-7所示。图4-7决策树模型参数选取代码截图在参数网格中设置了树的最大深度,节点拆分的最小样本数和叶子节点最小样本数。依次从小到大选取这些值可以避免数据过拟合和欠拟合。在树的最大深度中选取3,5,7,10,15这几个值既能保证模型从浅树到深树的探索还能节约运算时间。节点拆分的最小样本数选取2,5,10这样相对较小且离散的值既可以节约时间,也能控制模型的复杂度。叶子节点最小样本数选取1,2,4既可以保证算法在不同数据特性下平衡模型的拟合能力和泛化能力,还能同时兼顾计算效率。之后选用5折交叉验证选取最佳参数。5折交叉验证能保证每个数据样本都有机会参与到训练和测试中,且时间成本较低。最后使用最佳参数进行模型预测,计算特征的重要性,然后进行特征的重要性排序。实现代码如下图4-8所示。图4-8决策树模型代码截图决策树可视化分析在完成了代码的设计后开始运行代码。由于本数据的特征值过多,某些特征对销量的影响可以忽略不计,所以本步骤只可视化展示特征重要性排名的前20个。效果如下图4-9所示。图4-9决策树模型运行效果图依据条形图可以看出影响销量最重要的几类特征从高到低为店铺分类标号下的第5个分类、差价、售价和原价以及种类标号等。可以看出顾客看重商品所属店铺,商品的价格,折扣力度以及商品的种类。决策树算法从侧面初步了解了影响顾客购买行为的因素。便于商家在做商品销售计划时进行参考。后面本文将使用随机森林模型再次验证本次结果。随机森林特征重要性排名建立与分析随机森林特征排名的理论介绍前面本文已经使用了决策树模型进行特征值的分析,现在来构建随机森林模型来实现特征值的重要性排名。首先目标量和特征量不变,之后要将数据集拆分为训练集和测试集。创建随机森林模型后进行训练,计算特征重要性。随机森林通过打乱某个特征的值,然后查看模型性能的下降程度来计算该特征的重要性。本次采用的公式如下 (公式4-6)其中P是排列重要性,f是某个特征,Scoreoriginal是原始模型的性能得分,Scorepermuted是打乱特征f的值后模型的性能得分。随机森林特征排名的代码设计先导入构建算法所需要的库,然后导入数据划分数据集。在本模型中测试集占总数据量的30%,保证能提供足够的数据进行训练也能控制模型训练时间。随机种子定为42,确保每次划分的结果一致。分离特征和目标变量。之后进行模型随机森林的构建。本次使用的决策树定为500。因为在大多数情况下,这个数量的决策树可以在可接受的计算时间内提供较好的性能,也能避免过拟合情况的出现。每棵决策树在分裂时最多考虑6个特征,让每棵决策树的结构相对简单,减少了过拟合的风险。之后将每个特征的评分获取后计算特征的重要性,进行数据可视化的输出。结果如下图4-10所示。图4-10随机森林重要性排名代码部分截图随机森林特征排名的可视化分析因为特征值过多,且部分特征值对销量的影响可以忽略不记,所以本文使用随机森林模型计算完特征的重要性后只可视化前20个。结果如下图4-11所示。图4-11随机森林重要性排名运行效果图根据结果可以看出店铺分类标号,差价,售价,原价,种类标号等特征的重要性是占比较大,与决策树模型所展示的结果是差不多的,所以可以得出影响顾客作出购买行为的因素主要为商品所售卖的店铺,差价,售价,原价,种类标号。侧面验证了决策树模型的结果。之后可以结合大数据技术对顾客的购买行为进行进一步分析。梯度提升树模型建立与预测梯度提升树的理论介绍梯度提升树是一种基于决策树的集成学习算法,它的目标是构建一个加法模型来逼近目标值y,模型的最终预测值是多个弱学习器预测值的累加,可表示为: (公式4-5)其中第i个样本在经过M轮迭代后的预测值,M是迭代轮数,是第m个弱学习器(决策树)对第i个样本的预测值,是第i个样本的特征向量。梯度提升树模型的代码实现本节开始构建梯度提升树预测模型的代码。在本次的模型中仍旧选择对数销量为目标变量,其他为特征值。将数据读取进软件后开始模型的构建。梯度提升树做预测需要设置模型的学习率,学习率控制着每次迭代时产生的弱学习器的贡献程度,这里设置为0.01。梯度提升树的学习率如果设置过大,模型在迭代过程中可能会跳过最优解,导致损失函数值无法收敛,甚至出现梯度爆炸的情况。且算法时间成本会变高。所以选取0.01为模型的学习率。在本模型中选取的损失函数为平方误差,迭代次数定为20000。因为较小的学习率参数设置,选择较大的迭代次数可以让模型逐步精细调整预测。保证预测结果的准确性。在模型定义好后开始进行模型训练,进行循环迭代。当模型迭代至足够数量后将结果进行可视化输出,将预测值与实际值进行对比。关键代码如下图4-12所示。图4-12梯度提升树代码截图梯度提升树模型的效果分析模型的预测效果如下图4-13所示,红色为算法的预测值,蓝色为数据的实际值。由图可看出红色和蓝色的相交部分只集中在对数销量为4到10之间,其他部分几乎不重合。该模型部分样本上预测效果较好,但整体仍存在偏差,尤其对某些销量量级的预测精度不足。对此问题的出现猜测是由于此算法过于复杂,数据容易过拟合。图4-13梯度提升树模型预测效果图如下图4-14所示,根据模型的评估可以看出该模型的均方误差相对合理,但是R2不足0.5,因此为了保证预测结果的可靠性本文需要建立其它预测模型。图4-14梯度提升树模型评估此模型虽未对销量进行精准预测,但是给与了对预测算法的选择思路。该数据适合使用不易过拟合化的非线性算法。在下一节中本文将使用随机森林算法进行预测。随机森林预测模型建立与分析随机森林预测理论介绍由于梯度提升树模型的预测效果不理想,推测是因为梯度提升树较为复杂,迭代次数过多导致了过拟合。为了解决过拟合问题,本文选用使用随机森林回归来开展预测工作。这是由于随机森林在构建每一棵决策树时,会同时对样本和特征分别进行随机抽样与随机选择。这种方式使得每一棵决策树都存在差异,从而有效避免了过拟合的问题。随机森林的预测流程是先构建出单棵的决策树,当输入特征向量后,每一棵决策树都会给出一个预测值。再将这些预测值相加,取其平均值,得到随机森林的最终结果。其公式如下: 公式(4-7)上述公式中是随机森林的最终预测值,n是决策树的总数,x为特征,为每棵决策树给的一个预测试。之后再根据此思路编辑代码。随机森林预测代码设计随机森林预测的代码实现相对简单。先根据需求导入必要的库以保证代码能够实现图形绘制,数值计算,数据处理和分析以及模型构建和评估。之后对数据进行读取。再创建一个布尔值数组,长度与数据行数相同。在所创建的布尔值数组中先让所有元素都为True,之后再剔除数据的因变量列。将剩余的列作为特征矩阵,再开始创建随机森林回归模型。本次模型使用1000棵决策树。使用这个数量的决策树可以有效的控制时间成本且保证预测的准确性。随机种子固定为42以确保每次运行代码时模型的结果一致。之后进行模型训练,进行对因变量的预测。之后输出预测结果,将预测结果与实际值进行对比,绘制散点图进行可视化输出。关键代码如下图4-15所示。图4-15随机森林预测关键代码截图随机森林预测效果分析代码运行效果如下图4-16所示,可以明显看出其结果比梯度提升树模型要好很多。红色为预测结果,蓝色为预测值,两者几乎重叠。图4-16随机森林预测效果图接下来开始进行模型评估。如下图4-17与前面的梯度提升树模型评估对比可以发现均方误差与R2分数都有了很大的改善。可以看出随机森林对本数据的解释度更高。对商品销量的预测值更准确。图4-17随机森林预测模型评估图淘宝化妆品购买行为分析与预测研究结果分析结果与可视化在经过机器学习后,本文得出影响化妆品的销量的主要因素为商品种类,差价,售价,原价,商品店铺。先查看在最大销量1000000下的各种类数量情况,为了方便查看各种类达到最大销量的数量占比情况,使用饼图进行可视化,代码如下图5-1所示。图5-1销量为1000000的种类可视化代码截图可视化结果如下图5-2所示。有7个类的商品达到了销量1000000。其中修容类的销量最好,其次是口红类,护肤类和洁面类。最后为防晒类和隔离类,各有2个商品销量达到1000000。最后为定妆类,只有一款定妆产品的销量在1000000。图5-2销量为1000000的种类饼图展示之后进行销量为1的商品种类数量的分析。为了了解各种类在最小销量的数量分布情况,直观展现那种种类的数量最多,最少,使用折线图进行数据可视化。代码如下图5-3所示。图5-3销量为1的种类折线图展示可视化结果如图5-4所示,根据折线图可知大部分种类的数量在最小销量的统计中都集中在20个以下但遮瑕类的数量却接近50,远超其他种类在此可以猜测大众对遮瑕的需求不高。图5-4销量为1的种类折线图展示在查看了商品种类对商品销量的影响后,来分析价格对于商品销量的影响。为了清晰展示各类别之间的价格差异,使用柱状图做出销量达到1000000的各类商品的最高价格。代码如下图5-5所示。图5-5最大销量与种类最高价格可视化代码截图可视化结果由下图5-6所示。由图可知,除护肤类商品外其他种类的商品最高价格不超过60元,且集中于40元至50元之间。护肤类商品最高价格在79元。远超其他种类。猜测是顾客对护肤类商品的质量追求更高。图5-6销量为1000000的商品种类最高价格柱状图截图再来查看销量最小的各商品种类的最高价情况,为了方便比较也使用柱状图,代码如下图5-7所示。图5-7销量为1的商品种类最高价格可视化代码截图可视化结果如下图5-8所示,可看出各种类的最高价格差异巨大,尤其是遮瑕类达到167.15元。可见顾客对于价格有一定的偏爱范围。顾客不喜欢价格过高或过低的商品。对化妆品价格的追求为平价,实惠且有一定的质量保证。图5-8销量为1的商品种类最高价格柱状图截图对价格的探究不能局限于最高价格,下面来查看在销量1000000下的种类最低价格的柱状图,代码如下图5-9所示。图5-9销量为1000000的商品种类最低价格可视化代码截图可视化结果如下图5-10所示,与最高价格相比除了护肤类和洁面类,其他种类价格没有变化。可以看出顾客对这些种类的价格接受度已经固化。但对护肤类和洁面类有不同层次的需求。特别是护肤类商品,顾客的层次需求更明显。图5-10销量为1000000的商品种类最低价格柱状图截图最后查看销量最小情况下商品种类价格情况,代码如下图5-11所示。图5-11销量为1的商品种类最低价格柱状图截图可视化结果如下图5-12所示,与销量为1的最高价格相比两者价格几乎没有重合,且各种类之间最低最高价格普遍差异较大。图5-12销量为1的商品种类最低价格柱状图截图先查看销量为1000000的商品的差价与销量为1的商品的差价。为了便于比较二者差价的变换趋势,使用折线图。代码如图5-13,5-14所示。图5-13销量为1000000的种类差价可视化代码截图图5-14销量为1的种类差价可视化代码截图可视化结果如下图5-15,下图5-16所示。通过下面两幅折线图可以非常明显的看出当销量为1000000时与商品销量为1时差价区别非常的明显。在销量为1000000时差价基本在10元以上,护肤类的差价甚至达到了152.1元。而销量为1时差价仅仅只有5元,且基本为0。可以得出销量为1000000时差价量远比销量为1的高。图5-15销量为1000000的种类差价折线图图5-16销量为1的种类差价折线图下面来查看销量为1000000与销量为1的店铺统计与对比。为了方便对比二者间店铺数量的差别,使用柱状图。柱状图可以直观的看出在不同销量下店铺数量的最高,最低值。代码如下图5-17,5-18。图5-17销量为1000000的店铺分类个数可视化代码截图图5-18销量为1的店铺分类个数可视化代码截图可视化结果如下图5-19,下图5-20所示。由这两幅图可以看出销量在1000000中的商品全部来自旗舰店,销量为1的商品大部分来自其他类店铺。这可能与品牌影响力有关。图5-19销量为1000000的店铺分类个数柱状图图5-20销量为1的店铺分类个数柱状图本小节通过对机器学习算法所得结论的进行进一步分析,直观展示机器学习结果在数据中的具体差异,更能从可视化中探索到顾客在进行商品购买时的想法。得出顾客更偏向于购买平价,较平时有较大优惠且为旗舰店的商品。在所有分类中,顾客对护肤类的商品要求较高,可接受价格比其他类别高。对于对化妆品对数销量的预测,梯度提升树模型的预测集中于2至12,随机森林模型集中在0至12。二者都在4至10之间最为集中。但随机森林的预测效果更好。总结与展望经历完淘宝化妆品数据的爬取、清理和处理后,本文发现化妆品种类繁多,价格差距巨大。其中,修容类产品的销量可观,遮瑕类产品的销量最低。在化妆品功效中售卖最多功能的是提亮,销量最好功能的却是抗皱。通过决策树和随机森林这两种算法,本文得出商品所属店铺、差价、售价、原价、种类标号这几个特征对商品的销售量有较大影响。在销量预测方面,本文运用梯度提升树和随机森林这两个模型,得到了两个预测结果。但是根据模型评估梯度提升树对对数销量的预测不如随机森林好。在此猜测是因为梯度提升树较为复杂,迭代次数过多导致了过拟合。在本文所涉及的分析中,决策树算法只能依据节点出现次数对特征值的重要性进行排序,无法判断该特征对销量而言是有利还是不利,需要进行更深层次的优化。而随机森林算法在特征重要性排序上不够细致。还可以优化数据处理过程,更精确地对数据特征进行分类,从而得到更优的特征值排序结果。结论本研究以淘宝化妆品销售数据为核心,全面涵盖数据处理、可视化分析、模型构建以及结果解读等多个环节,旨在深入探究化妆品购买行为模式,并实现对销量的精准预测。在数据可视化阶段,运用大数据技术,精准呈现了当前化妆品市场的价格分布、销量情况以及产品的主要功能。针对销量较高和较低的两类产品,展开深度剖析,挖掘影响销量的关键因素。通过各类可视化图表,直观清晰地展示了不同销量情境下各因素的具体表现,为后续研究提供了直观的数据依据。在机器学习环节,借助决策树和随机森林算法,对影响化妆品销量的诸多因素进行重要性排名;同时,运用梯度提升树和随机森林回归模型对销量进行预测,为商家制定科学合理的销售策略提供有力的数据支持和决策参考。本研究结果表明,商品所属店铺类型、价格差价、售价等是影响化妆品销量的关键因素。也是顾客在做购买决策时会思考的主要因素。在不同销量水平下,商品的差价大小和店铺分布呈现出显著差异。在销量预测方面,经过模型评估对比,随机森林模型展现出更优的性能,预测结果更为精准。未来可进一步优化决策树和随机森林算法,完善数据处理流程,提高数据分类的精细化程度,从而更准确地进行特征值排序,为化妆品市场研究和销售策略制定提供更为坚实的理论支撑和实践指导。参考文献田嘉文.基于胶囊网络的淘宝电商平台精准营销研究[D].北京交通大学,2022.DOI:10.26944/ki.gbfju.2022.002338.杨茜.基于机器学习的电商平台用户行为研究[D].天津商业大学,2023.DOI:10.27362/ki.gtsxy.2023.000307.范萱.基于机器学习的电商平台用户行为分析与预测[D].湘潭大学,2023.DOI:10.27426/ki.gxtdu.2023.001822.朱宝慧.基于深度学习的电商客户数据分析——评《电子商务理论与案例分析》[J].中国教育学刊,2022,(02):120.吴鑫,李君,茅智慧,等.基于GA-XGBoost的电商用户购买行为预测[J].浙江万里学院学报,2022,35(04):86-92.DOI:10.13777/ki.issn1671-2250.2022.04.011.沈阳.基于行为数据图形化与深度学习的购买行为预测研究[D].辽宁师范大学,2022.DOI:10.27212/ki.glnsu.2022.000539.张煜杨.电商大数据处理平台的设计与实现[D].华东师范大学,2023.DOI:10.27149/ki.ghdsu.2023.000003.张宁.基于机器学习的网购者购买意愿预测研究[D].首都经济贸易大学,2021.DOI:10.27338/ki.gsjmu.2021.000489.刘嵩.数字经济下电商平台用户购买行为的预测研究[D].首都经济贸易大学,2021.DOI:10.27338/ki.gsjmu.2021.000863.ZhouS,HudinSN.Advancinge-commerceuserpurchaseprediction:Integrationoftime-seriesattentionwithevent-basedtimestampencodingandGraphNeuralNetwork-Enhanceduserprofiling.[J].PloSone,2024,19(4):e0299087-e0299087.ShawmoonMA,SakibSK,RezwanH,etal.Predictivemodelingofconsumerpurchasebehavioronsocialmedia:Integratingtheoryofplannedbehaviorandmachinelearningforactionableinsights.[J].PloSone,2023,18(12):e0296336-e0296336.BireshK,SharmisthaR,AnuragS,etal.E-CommerceWebsiteUsabilityAnalysisUsingtheAssociationRuleMiningandMachineLearningAlgorithm[J].Mathematics,2022,11(1):25-25.ZhiG.Optimizationofcross-borderE-commerce(CBEC)supplychainmanagementbasedonfuzzylogicandauctiontheory[J].ScientificReports,2024,14(1):14088-14088.ZhangX,GuoF,GuoF,etal.ABriefSurveyofMachineLearningandDeepLearningTechniquesforE-CommerceResearch[J].JournalofTheoreticalandAppliedElectronicCommerceResearch,2023,18(4):2188-2188.ShahriareMS,FaridulSI.Modelingonlinecustomerpurchaseintentionbehaviorapplyingdifferentfeatureengineeringandclassificationtechniques[J].DiscoverArtificialIntelligence,2023,3(1):
附录决策树代码importpandasaspdfromsklearn.treeimportDecisionTreeRegressorfromsklearn.preprocessingimportOneHotEncoder,StandardScalerfromposeimportColumnTransformerfromsklearn.model_selectionimporttrain_test_split,GridSearchCVfromsklearn.metricsimportmean_squared_error,mean_absolute_error,r2_scoreimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimSun']plt.rcParams['axes.unicode_minus']=Falsedata=pd.read_csv('D:\\毕业论文用\\毕业论文数据3.csv')feature_columns=['原价','售价','差价','是否补水','是否美白','是否淡斑','是否控油','是否抗皱','是否提亮','是否紧致','是否专注干皮','是否专注敏感肌','是否专注油皮','是否专注痘肌','是否为海外产品','种类标号','店铺分类标号','发货地区标号']target_column='对数销量'X=data[feature_columns]y=data[target_column]categorical_columns=['是否补水','发货地区标号','是否美白','是否淡斑','是否控油','是否抗皱','是否提亮','是否紧致','是否专注干皮','是否专注敏感肌','是否专注油皮','是否专注痘肌','是否为海外产品','种类标号','店铺分类标号']numeric_columns=[colforcolinfeature_columnsifcolnotincategorical_columns]preprocessor=ColumnTransformer(transformers=[('num',StandardScaler(),numeric_columns),('cat',OneHotEncoder(),categorical_columns)])X_processed=preprocessor.fit_transform(X)X_train,X_test,y_train,y_test=train_test_split(X_processed,y,test_size=0.2,random_state=42)model=DecisionTreeRegressor(random_state=42)param_grid={'max_depth':[3,5,7,10,15],'min_samples_split':[2,5,10],'min_samples_leaf':[1,2,4]}grid_search=GridSearchCV(model,param_grid,cv=5,scoring='neg_mean_squared_error')grid_search.fit(X_train,y_train)best_model=grid_search.best_estimator_y_pred=best_model.predict(X_test)feature_importances=best_model.feature_importances_all_feature_names=list(numeric_columns)encoded_feature_names=d_transformers_['cat'].get_feature_names_out(categorical_columns)all_feature_names.extend(encoded_feature_names)feature_importance_dict=dict(zip(all_feature_names,feature_importances))sorted_importance=sorted(feature_importance_dict.items(),key=lambdax:x[1],reverse=True)print("特征重要性排序:")forfeature,importanceinsorted_importance:print(f"{feature}:{importance}")sorted_importance_top20=sorted_importance[:20]features=[item[0]foriteminsorted_importance_top20]importances=[item[1]foriteminsorted_importance_top20]plt.figure(figsize=(10,6))plt.barh(features,importances)plt.xlabel('重要性')plt.title('特征重要性排序(前20)')plt.gca().invert_yaxis()#反转y轴,将最重要的特征放在顶部plt.show()梯度提升树代码importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdfromsklearn.ensembleimportGradientBoostingRegressorfromsklearn.model_selectionimportcross_val_scoreplt.rcParams['font.sans-serif']=['SimSun']plt.rcParams['axes.unicode_minus']=Falsedefgbm_sale():mydata=pd.read_csv('D:\\毕业论文用\\毕业论文数据3.csv')train=np.array([True]*len(mydata))X_train=mydata[train].drop(columns=['对数销量'])y_train=mydata[train]['对数销量']gbm_sale=GradientBoostingRegressor(learning_rate=0.01,loss='squared_error',n_estimators=20000,verbose=0)gbm_sale.fit(X_train,y_train)cv_scores=cross_val_score(gbm_sale,X_train,y_train,cv=3)returngbm_sale,cv_scores,X_train,y_trainmodel,scores,X_train,y_train=gbm_sale()y_train_pred=model.predict(X_train)defplot_results(X_train,y_train,y_train_pred):plt.scatter(range(len(y_train)),y_train,color='blue',label='Actual')plt.scatter(range(len(y_train_pred)),y_train_pred,color='red',label='Predicted')plt.xlabel('Index')plt.ylabel('对数销量')plt.title('GradientBoostingRegressor模型预测效果')plt.legend()plt.show()plot_results(X_train,y_train,y_train_pred)fromsklearn.metricsimportmean_squared_error,r2_scoremse=mean_squared_error(y_train,y_train_pred)r2=r2_score(y_train,y_train_pred)print(f"均方误差(MSE):{mse}")print(f"R²分数:{r2}")随机森林代码importpandasaspdimportmatplotlib.pyplotaspltfromsklearn.ensembleimportRandomForestRegressorfromsklearn.model_selectionimporttrain_test_splitfromsklearn.inspectionimportpermutation_importancefromsklearn.metricsimportmean_squared
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔市拜泉县2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 长治市襄垣县2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 巴音郭楞蒙古自治州尉犁县2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 钢结构制作与安装施工方案
- 2026年高速路政执法招录试题及答案
- 2026年高级经济师资格考试(民生保障经济专业知识和实务)测试题及答案
- 【2025年】《医学影像诊断学》试题库含答案
- 2025年教师信息素养训练题库(附答案)
- (2025年)【教师资格证】幼儿园教资笔试真题与答案解析
- 2026年抚州市公安局招聘警务辅助人员笔试试题(含答案)
- 2026年高考语文作文六大主题分类与命题预测
- 2024年12月日语能力考试N2真题答案详解
- (二诊)德阳市2023级高三第二次诊断考试语文试卷(含标准答案)
- 幼儿园单位内部控制制度
- 2026年西安交大少年班选拔考试数学试卷试题(含答案详解)
- 2025福建农信春季招聘194人(公共基础知识)综合能力测试题附答案
- 2025年离婚抖音作品离婚协议书
- 高鸿业《西方经济学(微观部分)》(第7版)笔记和课后习题(含考研真题)详解
- HXD1C型电力机车的日常检修工艺设计
- 2022年广西林业集团有限公司招聘笔试试题及答案解析
- 危险货物包装说明书
评论
0/150
提交评论