如何开启一个kaggle项目(流程有哪些?)销量预测项目

看了几篇kaggle的solution,总结了一下,完成一个机器学习项目,通常分为以下几步:
1.载入数据&查看数据信息
2.数据预处理1(数据清洗,异常值处理)
3.特征工程(在现有数据中挖掘对任务有用的新特征)
4.数据处理2(将处理过的不同数据表连接、合并…最终划分为训练集和测试集,形成可以用来训练的数据集)
5.模型的选择(试用几个模型来比较效果)
6.模型的比较与融合(挑选好的模型互相融合)
7.模型的训练与保存
8.模型的调用与测试

接下来,以一个例子来分享一下这个项目:

1 项目介绍

项目地址如下:

https://www.kaggle.com/c/competitive-data-science-predict-future-sales/data?select=test.csv

数据集介绍:
在这个网址中,有涉及到任务的数据集,
在这里插入图片描述
在旁边可以查看数据的构成和基本信息,不必也做不到用excel打开看一看。因为这个数据集非常大,总共100MB大小,所以excel打开必然会崩。
在这里插入图片描述

上述文件的描述可以在下图中看到:
在这里插入图片描述
在6个csv文件中的各个数据字段的含义,下图也有表述:
在这里插入图片描述
思路:

  • 有用的特征是:往期每个月的数据。由于原数据中给的是每一天的数据,因此需要对每一个商店中每一个商品的数据都按月先求和。
  • 模型可以用之前所有月来预测最后一个月的数据。

代码解析:
载入数据

df_train = pd.read_csv('./kaggle/input/competitive-data-science-predict-future-sales/sales_train.csv')
df_shops = pd.read_csv('./kaggle/input/competitive-data-science-predict-future-sales/shops.csv')
df_items = pd.read_csv('./kaggle/input/competitive-data-science-predict-future-sales/items.csv')
df_item_categories = pd.read_csv('./kaggle/input/competitive-data-science-predict-future-sales/item_categories.csv')
df_test = pd.read_csv('./kaggle/input/competitive-data-science-predict-future-sales/test.csv')

查看数据基本信息

df_train.head()
df_test.head()
df_train.info()
df_train.describe()
df_train.isnull().sum()
df_test.isna().sum()

数据预处理

#在df_train里剔除date_block_num和item_price
df_train.drop(['date_block_num','item_price'], axis=1, inplace=True)



df_train['date'] = pd.to_datetime(df_train['date'], dayfirst=True)
df_train['date'] = df_train['date'].apply(lambda x: x.strftime('%Y-%m'))
df_train.head()



df = df_train.groupby(['date','shop_id','item_id']).sum()# sql group by
#透视表是一种可以对数据动态排布并且分类汇总的表格格式。或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table
#index先按照shop_id排序,在shop_id里再按照item_id排序;column是date,也就是日期;
df = df.pivot_table(index=['shop_id','item_id'], columns='date', values='item_cnt_day', fill_value=0)
# 	        0	1	2	3	4
# date
# shop_id	0	0	0	0	0
# item_id	30	31	32	33	35
# 2013-01	0	0	6	3	1
# 2013-02(31) 11	10	3	14
# 2013-03	0	0	0	0	0
# 2013-04	0	0	0	0	0
# 2013-05	0	0	0	0	0
#举例,0号商店的30号商品在2013年2月的第一天迈出了31份

#inplace=True :是指重置索引的结果是否作用在前面的数据上
df.reset_index(inplace=True)
print(df.head().T)

#测试集处理,
df_test = pd.merge(df_test, df, on=['shop_id','item_id'], how='left')#类似concat
df_test.drop
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值