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

项目结果

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

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

相关文章
|
14天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
10天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
65 7
|
13天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
24天前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
26天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
41 3
|
26天前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
70 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
129 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
69 6