实战 | Kaggle竞赛:华盛顿特区首都自行车租赁预测

本文介绍了一次Kaggle竞赛实战,通过对华盛顿特区自行车租赁数据集的分析,包括异常值处理、特征工程、数据分布分析、模型建立,最终使用随机森林填充风速并对比不同模型的预测效果。
摘要由CSDN通过智能技术生成

大家好,我是木木~ 

今天为大家带来一篇关于Kaggle竞赛的实战!话不多说,直接上代码

01

准备数据

使用数据集:

华盛顿特区首都自行车租赁数据集

背景描述:

自行车共享系统是租用自行车的一种方式,在这种情况下,获得会员资格、租赁和自行车返回的过程通过遍布城市的亭址网络实现自动化。使用这些系统,人们可以从一个地点租一辆自行车,并根据需要将它归还到另一个地方。目前,世界各地有500多个自行车共享项目

数据说明:

datetime - 如:2011/1/1 19:00:00格式
season - 1 = 春天, 2 = 夏天, 3 = 秋天, 4 = 冬天
holiday - 0或者1,是否是假期
workingday - 0或者1 ,是否是工作日
weather - 1: 晴,少云,部分云,多云
2: 薄雾+云,薄雾+碎云,薄雾+少量云,薄雾
3: 轻雪,轻雨+雷暴+散云,轻雨+散云
4: 大雨+冰盘+雷雨+薄雾,雪+雾
temp - 摄氏温度
atemp -体感温度
humidity -相对湿度
windspeed - 风速
casual - 已启动的未注册用户租金数目
registered - 已启动的注册用户租金数目
count - 租金总额

数据来源:

https://www.kaggle.com/c/bike-sharing-demand/data


问题描述:

提供两年的每小时租金数据,训练集由每月的前19天组成,而测试集是第20天到月底。预测在测试集涵盖的每一小时内租用的自行车总数,仅使用租期之前可用的信息。

import pylab
import calendar
import numpy as np
import pandas as pd
import seaborn as sn
from scipy import stats
import missingno as msno
from datetime import datetime
import matplotlib.pyplot as plt
import warnings
pd.options.mode.chained_assignment = None
warnings.filterwarnings("ignore", category=DeprecationWarning)
%matplotlib inline
#读取数据
dailyData = pd.read_csv('../train.csv')

02

特征工程

通过describe, info, head 等函数可以看出如下问题

“season”、“holiday”、“workingday”和“weather”等栏应该是“类别”数据类型,但目前的数据类型是“int”。让我们以以下方式转换数据集,以便我们可以开始使用EDA,并且数据无空值,这点非常棒。

  • 从“datatime”栏中创建新列

  • 将“int”的数据类型强制转换成分类类型

  • 删除datetime列,因为我们已经从其中提取了有用的特性

dailyData["data"] = dailyData.datetime.apply(lambda x : x.split()[0])
dailyData["hour"] = dailyData.datetime.apply(lambda x : x.split()[1].split(":")[0])
dailyData["weekday"] = dailyData.data.apply(lambda dataString : calendar.day_name[datetime.strptime(dataString,"%Y-%m-%d").weekday()])
dailyData["month"] = dailyData.data.apply(lambda dataString : calendar.month_name[datetime.strptime(dataString,"%Y-%m-%d").month])
dailyData["season"] = dailyData.season.map({1: "Spring", 2:"Summer", 3: "Fall", 4: "Winter"})
dailyData["weather"] = dailyData.weather.map({1: " Clear + Few clouds + Partly cloudy + Partly cloudy",\
                                        2 : " Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist ", \
                                        3 : " Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds", \
                                        4 :" Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog " })

03

数据分布分析

异常值分析

fig, axes = plt.subplots(nrows=2,ncols=2)
fig.set_size_inches(12, 10)
sn.boxpl
  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值