本文是对Sofa数据竞赛上的练习项目:问答网站问题及回答数量预测进行结果展示。主要是根据日期这一唯一的特征,预测某问答网站每天新增的问题数和回答数。最终排名3/155。
1.背景介绍
给出美国某大型问答社区从2010年10月1日到2016年11月30日,每天新增的问题的个数和回答的个数。任务是预测2016年12月1日到2017年5月1日,该问答网站每天新增的问题数和回答数。在本练习赛中,日期是唯一的特征。
2.导入包和数据
2.1导入必要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
%matplotlib inline
sns.set(style="ticks")
pd.set_option("display.max_columns",None)#展示所有列数据
pd.set_option("display.max_rows",None)#展示所有行数据
# 忽视警告
import warnings
warnings.filterwarnings('ignore')
# 提取节假日,周末等信息
from datetime import date
from workalendar.usa import UnitedStates
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor
2.2导入数据并查看
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submit = pd.read_csv("sample_submit.csv")
train.head()
# 查看数据量
train.shape,test.shape
((2253, 4), (152, 2))
3.探索性数据分析及数据预处理
3.1时间特征预处理
由于分析的是日期特征,因此需要将数据的类型转为datetime格式。定义如下函数,提取日期中的年月日,周末等信息。处理后的数据如下。
def get_date(data):
data['date'] = pd.to_datetime(data['date'],format='%Y-%m-%d')
data['d_w']=data['date'].dt.dayofweek
data[<