数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析

简介: 数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析

相关视频

image.png

image.png

项目挑战

在后续分析中特征选择是重点之一,要根据事实情况和数据易处理的角度来筛选变量

解决方案

任务/目标

根据已有的车祸数据信息,计算严重车祸发生率最高和最低的地区;并对车祸发生严重程度进行因素分析,判断哪些外界环境变量会影响车祸严重程度,分别有怎样的影响。

数据源准备

数据记录了约350万条车祸信息查看文末了解数据免费获取方式,我们从中截取2017-2019年三个年份的完整记录来进行分析。其中有用的列信息包括:日期、地区、严重程度、道路方向、温度、湿度、压强、能见度、风速等13列。

因为数据集过大,因此采用Spark(Spark SQL)和MapReduce等进行数据清洗和筛选。计算各地区总共的车祸数量,以及各月份的车祸数量,用于后续的可视化。

bf1d3bde36a3d506ee68f3ae8b0215eb.png

如上图所示,条形图显示的是车祸数量减去全国平均值,而折线图描述的是高严重事故发生率(等级1、2为低严重,等级3、4为高严重)。


点击标题查阅往期内容


数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC

d761249d923fd348b0126cb42a85db21.png

因素分析

因为数据量足够多,因此直接删除了有缺失值的记录,得到了770,323行数据。为了分析影响车祸严重程度的环境因素,首先需要将每个因素进行处理和筛选:

能见度:当能见度为20-30公里时,能见度为极佳。然而在数据集中,有一些记录具有非常大的能见度,我认为这些值和10英里的值是一样的,因此把这些值改为10英里,以减少异常值。

天气状况:通过counplot计算不同天气状况下的车祸数量,得到了前10个最常出现的天气状况。为了研究环境因素对车祸严重程度的影响,我们只关注天气条件不好时的数据。因此,删除了天气条件良好的行,并删除了重复的行,最终得到360,824条记录。

f5caa76a6e3536147a300699e97c712e.png

风寒:通过绘制了pairplot来查看连续变量之间的关联性,其中发现了一些相互之间具有高度相关性的变量(温度和风寒)。因此删除了高相关变量(Wind_chill),以便使之后的回归分析更准确。

b5ff251935cf71cffabec074bc5eab6f.png

回归分析

在进行了特征选择和处理后,我们将剩下的变量进行回归分析。以车祸严重程度作为因变量(类别变量),以留下的环境变量为自变量,利用广义线性模型做回归分析,得到各变量的p值(如下图所示),结果表明,所有的p值均小于0.05,但其中温度和湿度的系数几乎等于0,说明这两个变量对严重程度的影响不大。民用曙暮光与风速均为正系数,因此可以推断夜间更容易发生严重事故,风速越高发生严重事故的可能性越大。气压和能见度系数均为负,因此气压和能见度越低,事故越严重。

77c45be16e1e7a64fa6e96710c47c2d7.png

分类树

我尝试通过分类树利用上述的特征来对车祸严重程度进行分类和预测,并得到对分类模型最有帮助的特征。

尝试了3、4和5交叉验证来确定最佳标准和树的最大深度。从下面的结果可以看出,对于该训练集,最佳的准则是gini准则,树的最大深度的最佳值是6。然后用这个模型对测试集进行预测。实际上,预测的结果并不是很好。因为样本数量太不均匀,导致分类结果与预测结果之间存在较大偏差。大部分数据被预测为2级。

645f5e8d379176b73a87c3e3406cc2be.png

由此可知,仅凭这些变量不足以衡量和预测车祸的严重程度。当然情况也是如此,因为我们在前提下只假设了外部环境因素的存在,而影响车祸的环境因素不仅包括这些因素。然而,我们仍然可以使用现有的数据集和决策树模型,以确定哪些变量是重要的分类。

53776c63f38a3b8ad3cbe84bec932435.png

项目结果

对于该车祸数据集,我们研究了交通事故数量和严重事故发生率,并分析了影响车祸严重程度的外部环境因素。结果表明,气压、能见度、风速和民用曙暮光对事故严重程度有一定的影响。压力、风速和温度对我们的数据进行分类更有帮助。

然而不可否认的是,这个分类和预测的结果并不是很好。由于数据集的限制,有许多潜在变量没有考虑进去,这些局限性导致回归和分类的结果存在一定的误差,但我们仍然可以得出一些关于环境因素可能影响人们发生车祸的结论。

相关文章
|
4天前
|
分布式计算 Java 关系型数据库
|
4天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
4天前
|
JSON 数据可视化 Shell
数据结构可视化 Graphviz在Python中的使用 [树的可视化]
数据结构可视化 Graphviz在Python中的使用 [树的可视化]
11 0
|
4天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
28 0
|
4天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
19 1
|
4天前
|
数据可视化 Python
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
|
4天前
|
SQL 数据库 数据库管理
python自动生成SQL语句自动化
python自动生成SQL语句自动化
26 1
|
4天前
|
机器学习/深度学习 数据采集 数据可视化
Python众筹项目结果预测:优化后的随机森林分类器可视化|数据代码分享
Python众筹项目结果预测:优化后的随机森林分类器可视化|数据代码分享
|
4天前
|
机器学习/深度学习 数据采集 数据可视化
数据分享|python分类预测职员离职:逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGBM交叉验证可视化
数据分享|python分类预测职员离职:逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGBM交叉验证可视化
|
4天前
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
42 1