资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Python数据分析预测商品销售额数据分析预测商品销售额、选题的背景、选题的背景选择此题: 题来源于Kaglge竞赛平台,具有定的学习意义。可以更好的理解机器学习和数据分析的券过程。标:根据商店的销售数据预测商品的销售额社会: 通过机器学习帮助商店板做出决策,可以提供货物的资源利率,促进社会经济发展。经济: 通过对销售额的预测,可以更好的帮助板进货和销售,提商店的收益。技术: 通过这次的项的学习,可以学到机器学习,数据挖掘的全部流程。从数据获取,到数据处理,特征选择,模型建各个全掌握机器学习的流程。可以更深对机器学习总回归任务的理解。、数据分析设计案、数据分析设计案1.数据集描述:训练集样本个数:8523, 测试集样本个数:5681。数据集字段说明:训练集共 11 个特征,1 个标签;测试集只有 11 个特征,没有标签。其中 Item_Identifier, Item_Fat_Content 等 8 个特征的原始数据都是字符串类型,其余特征是浮点数类型。(具体特征如下图所) 2.项实现的主要思路(1) 观察数据集各个特征,?出猜想,结果可能和哪些因素有关(2)检查各个特征的数据类型,将其转化为树枝类型便计算(3)观察数据的缺失值,确定缺失值处理法(4)观察训练集和测试集的特征分布规律,看看有没有需要删除的(5)样本数据的标准化(归到 0-1 之间)(6)建模处理训练集的异常值(7)构建多个模型,分别使交叉验证和格搜索选出最有的参数(8)使融合的法,对多个模型的结果加权求和 三、数据分析步骤三、数据分析步骤1.数据源数据来源https:/ Item_Weight 特征所有的变量,结果如下图所(图左边列表该列出现的类别,右边是计数。如第 Low Fat 5089 表Item_Weigh 特征所在列共有 5089 个样本的特征值为 Low Fat),虽然统计发现有四个字段,但是发现 LF,low fat, Low Fat 都表低脂,可以合为项,数字 0 代替。Regular 和 reg 都表正常可合为项,数字 1 代替;(2)统计 Outlet_Size 特征所有的变量,结果如下图所,商店有三种类型,按如下规则:Small : 数值 1 代替;Medium: 数值 2 代替;High: 数值 3 代替(3)统计 Outlet_Location_Type 特征所有的变量,结果如下图 ,商店地域有三种类型,按如下规则:Tier1: 数值 1 代替;Tier2: 数值 2代替;Tier3: 数值3 代替(4)统计 Item _Type 特征所有的变量,结果如下图,发现有 16 种类型的变量,我们第次尝试将这 16 种类型映射到 1-16 共 16 个整数上,后来参考上的其他的做法,将这 16 种划分为 3 类,物(Fruits and Vegetables, Snack Foods,Meat, Baking Goods, Bread,Breakfast, Frozen Foods, Dairy, Starchy Foods),品(Household, Others, Health and Hygiene)酒(Soft Drinks, HardDrinks)。处理完的特征较原来的特征模型分数有所提 1 import pandas as pd 2 import numpy as np 3 import matplotlib.pyplot as plt 4 import seaborn as sns 5 6 from math import sqrt 7 from sklearn.metrics import mean_squared_error # 计算均误差 8 from sklearn.metrics import make_scorer 9 from sklearn.model_selection import train_test_split10 11 from sklearn.model_selection import GridSearchCV, RepeatedKFold, cross_val_score,cross_val_predict,KFold12 from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor,AdaBoostRegressor13 from sklearn.linear_model import LinearRegression, Lasso, Ridge, ElasticNet14 15 import warnings16 warnings.filterwarnings(ignore)17 %matplotlib inline18 %config InlineBackend.figure_format = svg导数据集1 train_data = pd.read_csv(train_data.csv)2 test_data = pd.read_csv(test_data.csv)3 train_data.head()4 # len(test_data) 数据数值化操作 1 def small_class_num(data): 2 try: 3 #Item_Fat_Content 4 Item_Fat_Content = Low Fat:0, Regular:1,LF:0,reg:1,low fat:0, 5 dataItem_Fat_Content = dataItem_Fat_Content.apply(lambda x: Item_Fat_Contentx) 6 #Outlet_Size 7 # Outlet_Size = Small:1, Medium:2, High:3,NONE:4 8 # dataOutlet_Size.fillna(NONE,inplace=True) #填充缺失值 9 # dataOutlet_Size = dataOutlet_Size.apply(lambda x: Outlet_Sizex)10 dataOutlet_Size.replace(Small:1,Medium:2,High:3,inplace = True)11 #Outlet_Location_Type12 Outlet_Location_Type = Tier 3:3, Tier 2:2, Tier 1:113 dataOutlet_Location_Type = dataOutlet_Location_Type.apply(lambda x: Outlet_Location_Typex)14 #Outlet_Type15 Outlet_Type = Supermarket Type1:1, Supermarket Type2:2, Supermarket Type3:3, Grocery Store:4,16 dataOutlet_Type = dataOutlet_Type.apply(lambda x: Outlet_Typex)17 except:18 print(数值化已经完成过,切勿重复操作)19 20 small_class_num(train_data)21 small_class_num(test_data) 1 def item_type_num(data): 2 try: 3 dataItem_Type.replace(Fruits and Vegetables:FD,Meat:FD,Dairy:FD,Breakfast:FD,inplace = True) 4 dataItem_Type.replace(Snack Foods:FD,Frozen Foods:FD,Canned:FD,inplace = True) 5 dataItem_Type.replace(Baking Goods:FD,Breads:FD,Canned:FD,Seafood:FD,Starchy Foods:FD,inplace = True) 6 dataItem_Type.replace(Household:NC,Health and Hygiene:NC,Others:NC,inplace = True) 7 dataItem_Type.replace(Soft Drinks:DR,Hard Drinks:DR,inplace = True) 8 dataItem_Type.value_counts() 9 dataItem_Type.replace(FD:1,NC:2,DR:3,inplace = True)10 except:11 print(数值化已经完成过,切勿重复操作)12 item_type_num(train_data)13 item_type_num(test_data)1 train_data.isnull().sum() 缺失值处理 1 def Item_Weight_filna(data): 2 3 根据商品ID填充,没有则填充平均值 4 5 datadata.isnull().values=True #查看空 6 Item_Weight_Missing = datadataItem_Weight.isnull().index.tolist() 7 Item_Weight_Missing_ID = dataItem_IdentifierItem_Weight_Missing.tolist() 8 dataItem_Weight = dataItem_Weight.fillna(-1) 9 data_dict = data.groupby(Item_Identifier).Item_Weight.apply(list).to_dict() 10 for item in data_dict:11 a = data_dictitem12 while -1.0 in a:13 a.remove(-1.0)14 b = 15 for item in Item_Weight_Missing_ID:16 try:17 b.append(data_dictitem0)18 except:19 b.append(dataItem_Weight.mean()20 dataItem_WeightItem_Weight_Missing = b21 22 Item_Weight_filna(train_data)23 Item_Weight_filna(test_data) 数值类型特征归化处理(1) 对于连续性变量(Item_Weight,Item_Visibility,Item_MRP,),发现有的特征值特别,有的特征值很,所以我们将连续型数值标准化。使 min-max 标准化法。(2)其中,对于商店成的年份(Outlet_Establishment_Year),我们改商店成的时间,当前年份减去成时间可得。这样可以减模型的计算量。(3)商店 ID (IOutlet_Identifier)和 商品 ID (tem_Identifier,)看上去,暂时不做处理。数据缺失值处理(1) 对数据集进统计可知,数据集(包括测试集和训练集)都存在缺失值,两个数据集的确实值主要集中在 Item_Weight 和Outlet_Size 上。其中训练集Item_Weight 缺失 1463 个,Outlet_Size 缺失 2410 个;测试集 Item_Weight 缺失 976个,Outlet_Size 缺失1606 个 (2)对 Outlet_Size 的缺失值进处理。我们通过计算所有特征两两间的尔逊系数,得出了特征间的关系矩阵。将其画成热图可以很明显的看出,Outlet_Size 和Outlet_Location_Type 之间的关系最为密切。所以,我们采了随机森林的算法,对已有 Outlet
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号