任务:利用城市当天的天气、温度、湿度和风速等环境信息对自行车的租借数量进行有效预测,预测每小时内租用的自行车总数。
数据字段
特征 | 说明 |
---|---|
datetime | 详细到小时的日期+时间戳 |
season | 季节 1:春天, 2:夏天, 3:秋天, 4:冬天 |
holiday | 是否是公共假期 |
workingday | 是否是工作日(不是周末也不是公共假期) |
weather | 天气情况 1:无云,少量云,部分多云 2:雾+多云,雾+云散开,雾+少云,雾 3:小雪,小雨+雷暴+散云,小雨+散云 4:暴雨+冰雹+雷暴+雾,雪+雾 |
temp | 以摄氏度为单位的温度 |
atemp | 以摄氏度为单位的体感温度 |
humidity | 相对湿度 |
windspeed | 风速 |
casual | 未注册用户租赁数量 |
registered | 注册用户租赁数量 |
count | 租赁自行车总数,包括未注册和注册 |
导入工具包
import numpy as np
import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt
%matplotlib inline
1. 数据集基本信息
- 读取数据集
- 打印数据集的前几行
- 检测缺失值
- 数据集的大小(维度)
- 变量类型
#读取数据集
dataDaily = pd.read_csv("./input/train.csv")
# 查看数据前2行
dataDaily.head()
datetime | season | holiday | workingday | weather | temp | atemp | humidity | windspeed | casual | registered | count | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2011-01-01 00:00:00 | 1 | 0 | 0 | 1 | 9.84 | 14.395 | 81 | 0.0 | 3 | 13 | 16 |
1 | 2011-01-01 01:00:00 | 1 | 0 | 0 | 1 | 9.02 | 13.635 | 80 | 0.0 | 8 | 32 | 40 |
2 | 2011-01-01 02:00:00 | 1 | 0 | 0 | 1 | 9.02 | 13.635 | 80 | 0.0 | 5 | 27 | 32 |
3 | 2011-01-01 03:00:00 | 1 | 0 | 0 | 1 | 9.84 | 14.395 | 75 | 0.0 | 3 | 10 | 13 |
4 | 2011-01-01 04:00:00 | 1 | 0 | 0 | 1 | 9.84 | 14.395 | 75 |
#检测缺失值
dataDaily.isnull().sum()
dataDaily.info()
#数据初步展示
dataDaily.describe()
#数据可视化展示
dataDaily.plot(subplots=True, figsize=(10,20))
2. 相关分析
seaborn中的热力图是一个有用的描述两个特征之间关系的方法。在这里我们绘制count
vs temp
温度,humidity
湿度,windspeed
风速的相关热力图。
corrMat = dataDaily[["temp", "humidity","windspeed", "registered","casual","atemp","count"]].corr()
sn.heatmap(corrMat, annot=True, square=True)
理解因变量如何受特征(数值型)影响的一个常用方法是查看它们之间的相关矩阵。让我们绘制count
和数值型特征[temp
,atemp
,humidity
,windspeed
]之间的相关图。
-
temp
温度和humidity
湿度特征分别与count
呈正负相关。尽管它们之间的相关性不明显,但count
对temp
温度和humidity
湿度的依赖性仍然很小。 -
windspeed
不是真正有用的数字特征,这可以从它和count
的相关值看出来。 -
atemp
将不被采纳,因为atemp
和temp