数据挖掘实战(贝叶斯,神经网络和决策树)

目录

数据特征描述

数据来源

数据描述

图形可视化观察各因素之间的关系

Violinplot数据分布

 Pointplot数据斜率

回归分析可视化

数据预处理

变量映射处理

缺失值处理

决策树分类算法

贝叶斯分类算法

神经网络分类算法

结果分析


数据特征描述

数据来源

该数据集由kaggle网站提供,Bike Sharing Demand数据集,里面包括三个csv文件,这里我选取里面的train.csv文件来进行数据挖掘与分析。

数据挖掘实战(贝叶斯,神经网络和决策树)_第1张图片

数据描述

train.csv提供了某城市的共享单车2011年到2012年的数据集,该数据集包括了租车日期,租车季节,租车天气,租车气温,租车空气湿度等数据。

数据挖掘实战(贝叶斯,神经网络和决策树)_第2张图片

 

其中各类具体数据代表意义如下:

season :1=春天2=夏天3=秋天4=冬天holiday :是否是节假日
workingday : 1=工作日 0=周末
weather :1:晴天,多云2:雾天,阴天3:小雪,小雨4:大雨,大雪,大雾
temp : 气温摄氏度
atemp :体感温度
humidity : 湿度
windspeed : 风速
casual :非注册用户个数
registered : 注册用户个数
count :给定日期时间(每小时)总租车人数

首先进行数据探索,分析数据集的特性

首先导入相关的包

数据挖掘实战(贝叶斯,神经网络和决策树)_第3张图片

再读取数据集,这里读取数据集的部分列(2到6列)

查看数据集大小

含有10086条数据。

查看数据集信息:

数据挖掘实战(贝叶斯,神经网络和决策树)_第4张图片

 图形可视化观察各因素之间的关系

Violinplot数据分布

代码如下:先设置颜色主题,然后布置画板,里面包含四个小图。

数据挖掘实战(贝叶斯,神经网络和决策树)_第5张图片

图形如图所示。

可以看出workingday和temp和atemp之间的相差幅度较大,和holiday和weather之间的幅度较小。

数据挖掘实战(贝叶斯,神经网络和决策树)_第6张图片

 Pointplot数据斜率

代码如下:

先设置颜色主题,然后布置画板,里面包含四个小图。

数据挖掘实战(贝叶斯,神经网络和决策树)_第7张图片

数据挖掘实战(贝叶斯,神经网络和决策树)_第8张图片

回归分析可视化

下面分别基于tempatemp做线性回归的可视化,代码如下:

图形如下图所示

可以发现workingday为1比为0时更加密集。

数据挖掘实战(贝叶斯,神经网络和决策树)_第9张图片

数据预处理

先导入包

数据挖掘实战(贝叶斯,神经网络和决策树)_第10张图片

变量映射处理

把数据集中"season","weather"字段属于定性变量,将定性变量的数值取值,做映射处理,转化为描述性取值

数据挖掘实战(贝叶斯,神经网络和决策树)_第11张图片

处理结果如下:

数据挖掘实战(贝叶斯,神经网络和决策树)_第12张图片

缺失值处理

 

可以看出,该数据集没有缺失值。

数据挖掘实战(贝叶斯,神经网络和决策树)_第13张图片

如果数据集中有缺失值,在缺失值处理中,一般会删除缺失值。pandas模块中,提供了将包含NaN值的行删除的方法dropna(),处理缺失值最好的办法是“用最接近的数据替换它”

对于数值型数据,可用该列的数据的均值或者中位数进行替换。

对于分类型数据,可利用该列数据的出现频数最多的数据(众数)来填充。

决策树分类算法

选取其中部分列进行决策树算法。

读取train.csv文件并进行数据处理:将season为3和4的值变成1

将weather为3和4的值变成1

将temp大于10的值变为1

然后进行决策树的生成

数据挖掘实战(贝叶斯,神经网络和决策树)_第14张图片

上图所示代码生成了1.dot文件保存在桌面

查看1.dot文件

数据挖掘实战(贝叶斯,神经网络和决策树)_第15张图片

再将其变成决策树图形。

生成1.png图片的决策树如下图所示。

 数据挖掘实战(贝叶斯,神经网络和决策树)_第16张图片

 可以看出节假日和没有工作的日子里借用共享单车的数目较多。

贝叶斯分类算法

朴素贝叶斯分类算法是应用最为广泛的分类算法之一,是以贝叶斯定理为基础,并且假设特征条件之间相互独立的方法。先通过已给定的训练集,以特征词之间独立作为前提假设,学习从输入到输出的联合概率分布,再基于学习到的模型,输入X求出使得后验概率最大的输出Y。

具体代码如下:

数据挖掘实战(贝叶斯,神经网络和决策树)_第17张图片

测试数据集:

数据挖掘实战(贝叶斯,神经网络和决策树)_第18张图片

生成矩阵和维度:

数据挖掘实战(贝叶斯,神经网络和决策树)_第19张图片

得到结果如下图所示

数据挖掘实战(贝叶斯,神经网络和决策树)_第20张图片

 可以得到,模型的准确度非常高。

神经网络分类算法

采用BP算法。BP算法的基本思想是:学习过程由信号的正向传播与误差反向传播两个过程组成。正向传播时,输入样本从输入层传入,经过各隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出不符,则转入误差的反向传播阶段。误差反向传播是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层的误差信号,此误差信号即作为修正单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程周而复始的进行,权值不断调整的过程,也就是网络学习训练的过程,此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。

数据挖掘实战(贝叶斯,神经网络和决策树)_第21张图片

数据挖掘实战(贝叶斯,神经网络和决策树)_第22张图片 

 得到以下准确度的结果:

数据挖掘实战(贝叶斯,神经网络和决策树)_第23张图片

处理1000次以后 ,准确率逐渐稳定,可以得到准确率为0.9904

结果分析

 一般情况下,假日的平均租车人数比非假日多。

寒冷的天气下,非假日的租车人数比假日多

秋天和夏天租车人数最多

春天租车人数显著低于其他季节

总体上,天气越好,租车的人数越多(晴天 > 多云、阴天 > 雨天)

周六和周天租车高峰期在下午期间,工作日租车的高峰期是上下班高峰期。

你可能感兴趣的:(数据挖掘,决策树,神经网络)