【kaggle实战】——Predict Future Sales

这是一个playground类的题目,感觉playground的题目比较有意思而且数据不会太大,拿来练手挺好。。。。
比赛连接:Predict Future Sales

简介:

This challenge serves as final project for the “How to win a data science competition” Coursera course.

In this competition you will work with a challenging time-series dataset consisting of daily sales data, kindly provided by one of the largest Russian software firms - 1C Company.

We are asking you to predict total sales for every product and store in the next month. By solving this competition you will be able to apply and enhance your data science skills.
这项挑战是“如何赢得数据科学竞赛” Coursera课程的最终项目 。

在本次比赛中,您将使用由日本销售数据组成的具有挑战性的时间序列数据集,这些数据由俄罗斯最大的软件公司之一1C公司提供。

我们要求您预测下个月每个产品和商店的总销售额。通过解决这一竞争问题,您将能够应用并提高您的数据科学技能。

数据介绍:

文件说明

sales_train.csv - 培训集。2013年1月至2015年10月的每日历史数据。
test.csv - 测试集。您需要预测2015年11月这些商店和产品的销售情况。
sample_submission.csv - 正确格式的示例提交文件。
items.csv - 关于物品/产品的补充信息。
item_categories.csv - 有关项目类别的补充信息。
shops.csv - 关于商店的补充信息。

数据字段

ID - 表示测试集内(商店,项目)元组的Id
shop_id - 商店的唯一标识符
item_id - 产品的唯一标识符
item_category_id - 项目类别的唯一标识符
item_cnt_day - 销售的产品数量。您正在预测此度量的每月数量
item_price - 项目的当前价格
日期 - 日期格式为dd / mm / yyyy
date_block_num - 连续的月份编号,用于方便。2013年1月为0,2013年2月为1,…,2015年10月为33
item_name - 项目的名称
shop_name - 店铺名称
item_category_name - 项目类别的名称

代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

train=pd.read_csv(r'Desktop\sales_train_v2.csv')
test=pd.read_csv(r'Desktop\test.csv')

train.info()
test.info()

# 计算相关性
corrmat = train.corr()
k = 10 
cols = corrmat.nlargest(k, 'item_cnt_day')['item_cnt_day'].index
cm = np.corrcoef(train[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)
plt.show()

#挑选特征值
selected_features = ['item_id','shop_id' ]

X_train = train[selected_features]
X_test = test[selected_features]
y_train = train['item_cnt_day']

# 进行特征向量化
from sklearn.feature_extraction import DictVectorizer
dict_vec = DictVectorizer(sparse=False)

X_train = dict_vec.fit_transform(X_train.to_dict(orient='record'))
X_test = dict_vec.transform(X_test.to_dict(orient='record'))

# 用GradientBoostingRegressor进行预测
from sklearn.ensemble import GradientBoostingRegressor
rfr = GradientBoostingRegressor()
rfr.fit(X_train, y_train)
rfr_y_predict = rfr.predict(X_test)


rfr_submission = pd.DataFrame({'ID': test['ID'], 'item_cnt_month': rfr_y_predict})
rfr_submission.to_csv(r'Desktop\sub.csv', index=False,sep=',')

我的得分如下:
这里写图片描述
一共有320+支队伍参加,虽然我的排名不是很高,但是这毕竟是我第一次自己提交的成绩,还是很开心的(^o^)/
如果下次有时间我会继续改进这个方法,提高自己的排名,也就是说这篇博客会不定期更新哦~

猜你喜欢

转载自blog.csdn.net/Nicht_sehen/article/details/80067229