2021-01-06 11:34:32 阅读(193)
一个月前提出“超市销售预测”这个话题,已有624名数据科学家报名参加,其中77人提交了答案。无论你是一开始感到无法开始还是在这个过程中遇到瓶颈,本文都将带你体验超市销售预测的整个过程。但愿这篇文章能帮助越来越多的人走上数据科学之路。我们的探索将按照以下步骤进行:1。假设生成-头脑风暴影响因素,以便更好地理解问题。2.数据探索-观察和总结类别和连续性的特征,并推理数据。3.数据清理-输入数据中的丢失值,并检查异常值。4.特征工程-修改现有变量,建立新的分析变量。5.建模-根据数据建立预测模型。所以,闲话少说,现在言归正传!1、假设生成数据分析的关键步骤包括陈述问题和对积极影响因素的假设,这是观察数据的早期准备。当然,如果最终能够获得数据,我们可以列出所有可能性分析的列表。问题表达的第一步是理解问题表达。2013年,大数据科学家收集了1559种不同地区商店的销售数据,并逐一列出了每种产品的特点。目的是建立预测模型,了解这些商店每种产品的销售情况。通过使用这种模式,超市销售预测将试图抓住产品特征和商店特征,这些特征在提高销售中起着重要作用。所以关键是要找出这些特征。在提出假设之前,我们先进行可行性分析。假设我对这个问题做了以下假设(只是为了个人想法,大家可能会有更多的想法)。既然讨论的是商店和产品,首先要建立不同的数据组。商店假设:1.城市类型:位于城市或一线城市的商店销量应该更高,因为这里的人消费水平更高。2.人口密度:由于需求较大,人口密集地区的商店销量应该更大。3.商店规模:大型商店的销量应该更大,因为它们以一站式服务的形式运营,人们更喜欢在一个地方购买所有所需的产品。4.竞争对手:由于竞争更加激烈,类似商店的销量应该更小。5.营销:有独特促销区的店铺销量要更大,因为促销区通过巧妙的定格和广告会吸引更多的顾客。6.位置:位于繁华市场的商店销量应该更大,因为它们更接近顾客。7.客户行为:保持产品展示整齐,满足当地客户需求的店铺销量应该更大。氛围:员工礼貌的商店预计会有更多的顾客和更多的销售。产品假设:1.品牌:由于客户更信任,名牌产品的销量应该更高。2.包装:包装精美的产品能吸引顾客,销量更好。3.用途:日用品销量应高于特殊用途产品。4.展区:在商店里占据较大货架的产品更容易先吸引消费者,因此更受欢迎。5.店内可见度:店内产品的摆放会影响销售。门口的商品比后面的商品更吸引顾客。6.广告:大多数情况下,商店里广告做得好的产品销量更高。7.促销:有促销和折扣的商品更畅销。这只是我做的15个假设,每个人都可以有更深入的思考,创造自己的假设。请记住,数据可能不足以检测所有假设,但这些假设可以帮助你更好地理解问题,如果可能的话,我们也可以找到开源信息。让我们来到数据探索环节,仔细观察数据。2、数据探索在这里进行基本的数据探索,并对数据进行猜测。在下一个环节中,我们将尝试找出一些异常情况并解决。第一步是观察数据,并尝试根据现有数据找到假设信息。数据词典与假设的对比如下:我们可以总结如下:您肯定会发现您假设的特征,但数据不能直接反映特征,特征也不能直观地反映在数据中。此时,您可以找到一些开源数据来填补漏洞。我们首先加载所需的函数库和数据。这些数据可以从页面下载。一般来说,我们将首先合并训练数据和测试数据,并在运行特征工程后将其分开。这样就省去了重复操作训练数据和测试数据的麻烦。我们可以将它们合并到数据框的“数据”中,并用“源”列表示每个观察结果应该归为哪一列。这样,我们就可以看到数据可能有相同的列,这相当于测试和训练。其中一个挑战是丢失值,我们可以先检查哪些列表包含丢失值。请注意Item_Outlet_Sales是目标变量,而损失值是测试组的变量,所以不用担心。但是,我们必须在数据清理过程中将丢失值输入Item_Weight和Outlet_Size中。让我们观察一组数字变量的统计数据:观察结果如下:1.Item_Visibility的最小值为0,没有实际意义,因为当产品在商店销售时,可见度不能为0.2.Outlet_Establishment_Years的变化范围从1985到2009不等。以这种格式出现数值可能不合适。然而,如果我们能够将它们转化为商店的历史,这些值应该对销售产生更积极的影响。3.Item_Weight和Item_Outlet_Sales的低值证实了检查丢失值的发现。说到名义变量,让我们观察每组的特殊值。从图中可以看出,有1559种产品和10家商店(问题陈述中也提到了这些)。另一个值得注意的是Item_Type有16个特殊值。让我们进一步探索每个名义变量中不同类别的频率。显然,这里不涉及ID和源变量。从上述数据中得出以下结果:1.Item_Fat_Content:一些‘LowFat值被误编码为‘值’lowfat’和‘LF’。此外,还有一些‘Regular’变成了‘regular’。2.Item_Type:并非所有类别都有实数,合并类别似乎能得到更好的结果。3.Outlet_Type:Supermarkettype2andtype3可以合并,但在开始之前要考虑这个想法是否可取。3、数据清理步骤主要包括输入丢失值和处理异常值。虽然去除异常值在拟合技能中非常重要,但基于树的高级算法对异常值没有影响。所以这部分留给大家自己尝试。这里我们只关注输入的关键步骤。注:这里我们将广泛使用一些Pandaslibrary。若您对Pandas不太熟悉,可参考相关文章,浏览更多Pandas相关文章!输入丢失值我们发现两个有丢失值的变量——Item_Weight和Outlet_Size。此时,根据物品的平均重量输入物品的重量,步骤如下:上述步骤确认列中没有丢失值。我们按照商店的类别输入outlet__Size。这表明数据中没有丢失值。现在我们来看看特色工程。4、在数据探索阶段,我们发现数据之间存在细微的差异,因此必须解决问题。在分析现阶段的变量时,我们也会建立一些新的变量。步骤1:考虑合并店类型(Outlet_Type)在探索过程中,我们决定合并Supermarkettype2和Type3变量。这个想法怎么样?快速检查的方法是通过商店类型分析平均销量。如果销量相似,合并数据意义不大。data.pivot_table(values=’Item_Outlet_Sales’,index=’Outlet_Type上图显示了两者之间的巨大差异,我们根据原貌表现出来。请注意,这只是其中之一。面对不同的情况,可以采用其他分析方法,其他特征也可以采用相同的方法。第二步:修改item_visibility,我们注意到最小值为0,没有实际意义。我们将其视为丢失信息,并根据产品的平均可见性输入。这样就可以看出任何值都不是0。在第一步中,我们假设可见度更高的产品更受欢迎。但在比较产品的同时,我们也应该看到特定商店产品的可见性和所有商店类似产品的平均可见性。这让我们知道产品在某个商店比其他商店更受重视。我们可以使用上面的“visibility_avg实现变量。这成功地创造了新的变量。第三,这只是一个如何创造新特征的例子。强烈建议大家多尝试,因为优秀的特点可以大大提高模型的运行效果,无一例外地表现为优秀模型和普通模型的区别。第三步:刚才我们看到Item_Type变量有16个类别,可能在分析中有用,所以合并是个好主意。其中一种方法是手动将类别分配给每个变量。但是,如果你观察Item__,有一个问题:Identifier,也就是说,每个项目都有自己的ID,通常在FD开始、DR或NC。如果观察这些类别,主要是食品、饮料和非消耗品。所以我用Item_Identifier变量创造了一个新的列。另一种方法是根据销售量合并类别。平均销量高的类别可以合并。你可以自己试试这个。第四步:决定店铺的运营年限,我们要创建一个新的列来描述店铺的运营年限。操作如下:步骤5:修改Item_Fat_content类别我们发现Item_Fat_content变量类别中的错误和差异可以纠正为:现在看起来更合理了。但请注意,我们在步骤4中也看到了非消耗品,而fat-content不能很好地表明差异。因此,可以为这种观察结果创建一个单独的类别。第六步:由于scikit-learn只接受scikit-learn的数值编码和类别变量的独热编码,我将所有类型的名义变量转换为数值变量。另外,我还想把Outlet_Identifier作为变量。因此,我创建了一个与Outlet_identifier相同的新变量“‘Outlet并编码。Outlet_Identifier应该保持其原貌,因为它还需要提交文件。首先,我们使用sklearn预处理模块中的labelencoder将所有类别的变量编码为数值变量。一个独热码是指创建虚拟变量,每个类别需要一个变量。例如:Item_Fat_content有三个类别LowFat’,‘Regular’and‘Non-Edible’.。独热码会消除变量,产生三个新变量,每个变量都有二进制数-0(如果该类别不存在)和1(如果该类别存在)。可以通过Pandas“get_dummies实现功能。我们看到所有的变量都是实型变量,每个类别都有一个新的变量。现在让我们来看看Item_Fat_content形成的三列:每行只有一列对应原始变量的类别。第七步:数据输出的最后一步是将数据转换为训练数据组和测试数据组。将这两种数据输出到修改数据组中也是一个很好的想法,这样可以在各种场合重复使用。通过以下编码可以做到:好吧,这个链接到此结束。如果您希望特征工程的所有代码都以iPythonotebook的形式出现,请参考Githubrepository!5、现在我们已经准备好了所有的数据来建立预测模型。我将带您了解六种模型,包括线性拟合、决策树和随机森林,它们可以帮助您进入TOP20。首先建立基准模型。它不需要预测模型,就像基于信息的猜测一样。例如,在这种情况下,我们将销售预测为整体平均销售。流程如下:公共领导名单排名:1773你觉得它太小儿科了吗?如果你看看现在的LB,你会发现后面有四个选手。因此,基准模型有助于您建立标准。假如你的预测算法如下,一定有严重的错误,最终需要检查数据。如果你参加AVdatahacks或其他短程黑客马拉松,你会发现有人在大约5-10分钟内提交了数据。这并不特别,实际上是基准解决方案,而不是深不可测的科学。取总平均值是最简单的方法。您还可以尝试:1.产品平均销售2.特定类型商店的产品平均销售应该能够提供更好的解决方案。由于我们需要建立许多模型,我们不再重复编码,而是定义一个通用函数,输入算法和数据,然后建立模型,运行交叉验证,最后生成提交。如果你不喜欢函数,你也可以选择其他更复杂的方法。然而,我现在越来越倾向于使用函数(事实上,我有时使用过度)。函数如下:我添加了标记。如难以理解编码,请在评论中留言。我们现在已经建立了第一个线性-拟合模型。公共领导排名:1202可以看出,这一排名高于基准模型。但是,如果你注意到系数,你会发现过度拟合的程度非常高。岭回归模型可用于实现这一目标。想了解更多关于Ridge的信息&Lasso拟合技巧,请在微信官方账号回复“销售预测”下载!岭回归模型公共领导名单:1203虽然回归系数看起来更好,但排名几乎相同。模型参数可以通过微调来提高性能,但我认为不会有显著的进步。使用交叉验证发现也收效甚微,所以不能指望有更好的表现。让我们尝试决策树模型,看看结果是否会得到改进。公共领导排名:1162可以看出RMSE是1058,CV是1091,这告诉我们模型有些过度拟合。我们试着用四个主要变量建立决策树,max_depth为8,min_samples_leaf是150。公共领导名单排名:1157也可以使用其他参数
以上就是关于数据分析预测商超销售工作的全过程的相关介绍,更多数据分析预测商超销售工作的全过程相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对数据分析预测商超销售工作的全过程有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一