数据分享|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

项目结果

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

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

相关文章
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
329 5
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
208 3
|
算法 Java Python
使用Python来绘制樱花树
本文以林徽因的《你是人间的四月天》为引,将春日意象与现代职场编程艺术结合,通过Python的Turtle模块绘制分形树和花瓣图案。文章详细解析了Turtle模块的使用方法、递归算法及随机性在图形生成中的应用,展示了如何用代码创造自然美感。核心代码包含tree函数(绘制分形树)和petal函数(绘制花瓣),最终生成一幅生动的春日画卷。项目不仅帮助读者掌握Turtle绘图技巧,更激发对编程艺术的兴趣,鼓励探索数字世界的无限可能。
391 5
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
SQL 存储 数据挖掘
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
本文介绍了一种使用Python和`pdfplumber`库自动筛选简历的方法,特别是针对包含“SQL”技能的简历。通过环境准备、代码解析等步骤,实现从指定文件夹中筛选出含有“SQL”关键词的简历,并将其移动到新的文件夹中,提高招聘效率。
502 8
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
数据采集 分布式计算 Hadoop
使用Hadoop MapReduce进行大规模数据爬取
使用Hadoop MapReduce进行大规模数据爬取
|
SQL
sql树型应用总结
sql树型应用总结
143 2
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。

推荐镜像

更多