Python数据分析-对驾驶安全数据进行了预测

一、研究背景和意义

随着汽车保有量的不断增加,交通事故已成为全球范围内的重大公共安全问题。每年因交通事故造成的人员伤亡和财产损失给社会带来了巨大的负担。为了提高驾驶安全,减少交通事故的发生,许多研究致力于探索影响驾驶安全的因素,并开发相应的预测模型。

机器学习作为一种强大的数据分析工具,在驾驶安全领域得到了广泛的应用。通过对大量驾驶安全数据的学习和分析,机器学习算法可以自动发现数据中的模式和规律,并建立预测模型,以预测驾驶员的行为和事故风险。

研究意义:

  1. 提高驾驶安全:通过预测驾驶员的行为和事故风险,提前采取相应的措施,如发出警告、调整驾驶策略等,可以有效地减少交通事故的发生,提高驾驶安全。
  2. 优化交通管理:驾驶安全预测模型可以为交通管理部门提供决策支持,帮助他们优化交通流量、改善道路设施、加强交通安全宣传等,从而提高整个交通系统的安全性和效率。
  3. 推动智能驾驶技术的发展:驾驶安全预测是智能驾驶技术的重要组成部分。通过对驾驶安全数据的分析和预测,可以为智能驾驶系统提供实时的驾驶建议和决策支持,推动智能驾驶技术的发展和应用。
  4. 降低保险成本:保险公司可以利用驾驶安全预测模型来评估驾驶员的风险水平,从而制定个性化的保险费率,降低保险成本。
  5. 促进社会和谐发展:交通事故不仅给个人和家庭带来了巨大的痛苦和损失,也对社会的和谐发展造成了负面影响。通过提高驾驶安全,减少交通事故的发生,可以促进社会的和谐发展。

综上所述,使用机器学习方法对驾驶安全数据进行预测具有重要的研究背景和意义。它不仅可以提高驾驶安全,减少交通事故的发生,还可以为交通管理、智能驾驶技术、保险等领域提供有益的支持,促进社会的和谐发展。

二、实证分析

首先读取数据集

数据和完整代码

#####导入基础的数据处理包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Load the dataset
df = pd.read_csv("train.csv")

查看数据集前五行 

###查看数据
df.head()

可以发现每个样本有59个特征

接下来查看数据类型 

df.shape

 

发现数据量为595212*59,数据量挺大,这可能对最终的模型计算产生一些阻碍。接下来查看数据类型

接下来进行数据预处理,对其他行列进行处理,首先若是一行全为空值就删除

###对列进列进行处理。如果有一列的值全部一样,也就是取值唯一的特征变量就可以删除了,因为每个样本没啥区别,对模型就没啥用
#取值唯一的变量删除
for col in df.columns:
    if len(df[col].value_counts())==1:
        print(col)
        df.drop(col,axis=1,inplace=True)
#缺失到一定比例就删除
miss_ratio=0.15
for col in df.columns:
    if  df[col].isnull().sum()>df.shape[0]*miss_ratio:
        print(col)
        df.drop(col,axis=1,inplace=True)

 统计性描述

观察缺失值可视化

import missingno as msno
msno.matrix(df)

grouped = df.groupby('ps_calc_20_bin').mean()
grouped 

 

接下来画出特征的直方图

df.hist(bins=50, figsize=(20,15))
plt.show()

 

查看特征变量的箱线图分布

接下来采用了斯皮尔曼相关系数计算,画出热力图。在训练集上带上了y

corr = plt.subplots(figsize = (20,16),dpi=128)
corr= sns.heatmap(df.corr(method='spearman'),annot=True,square=True)

 

响应变量分布

由于数据集样本不平衡,要处理一下

no_target = df_copy.drop(index = target.index)
no_target = no_target.sample(n = 21694)
balanced = pd.concat([no_target, target])
balanced['target'].value_counts()

balanced

平衡了

可视化响应变量分布

开始机器学习  准备模型

# Split the dataset into training and test sets
X = df1.drop(['id'], axis=1)  ####我们这里target已经没有了
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=10)
model.fit(X_train_s, y_train)
model.score(X_test_s, y_test)

from sklearn.ensemble import RandomForestClassifier
model= RandomForestClassifier(n_estimators=1000,  max_features='sqrt',random_state=10)
model.fit(X_train_s, y_train)
model.score(X_test_s, y_test)
from sklearn.ensemble import AdaBoostClassifier
model0 = AdaBoostClassifier(n_estimators=100,random_state=77)
model0.fit(X_train_s, y_train)
model0.score(X_test_s, y_test)

到此,完成了模型的预测和比较。。。

三、小结

在这个案例中,我运用了机器学习的方法,包括KNN,自适应提升和随机森林等等,对驾驶安全进行了预测。然而,由于数据量很 大导致样本不平衡,最终结果很一般,甚至出现了过拟合的情况。在解决这个问题的过程中,我采用了以下的方法: 数据清洗和特征选择 在机器学习的过程中,数据质量和特征选择都是非常重要的。在本案例中,我通过数据清洗和特征选择的方式,剔除了一些噪声 和冗余的数据,以及一些无关或者不必要的特征。这可以提高数据的质量,提高模型的准确性。 数据预处理 在处理数据时,我注意到数据量很大,且样本不平衡,这对于机器学习算法的效果产生了很大的影响。因此,我采用了一些数据 预处理的方法,包括数据平衡和数据规范化。数据平衡可以通过欠采样和过采样的方式来实现。而数据规范化则可以通过归一化 和标准化等方式来实现,以确保不同特征的数值范围一致。

模型选择和调优:在本案例中,我尝试了多种机器学习算法,包括KNN,自适应提升和随机森林等等。然而,由于数据量很大且样本不平衡,模型 表现并不理想,存在过拟合的情况。因此,后续可以采用模型调优的方式来提高模型的准确性和泛化能力。 结果分析和优化 在完成机器学习任务后,我对结果进行了分析和优化。例如,我发现在预测少数类别时,模型表现并不理想,因此需要进一步加强 对少数类别的学习。 综上所述,在本案例中,我通过数据清洗和特征选择、数据预处理、模型选择和调优以及结果分析和优化等方法,一定程度上完 成了机器学习的过程,后续的对于样本处理以及过拟合的问题还需进一步研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模式分解的概念(上)-分解、无损连接性、保持函数依赖特性

一、分解的概念 1、分解的定义 2、判断一个关系模式的集合P是否为关系模式R的一个分解 只要满足以下三个条件,P就是R的一个分解 (1)P中所有关系模式属性集的并集是R的属性集 (2)P中所有不同的关系模式的属性集之间…

如何通过自定义模块DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…

本地快速部署大语言模型开发平台Dify并实现远程访问保姆级教程

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…

解决element-plus没有导出的成员FormInstance

使用element-plus的el-form时,报错“"element-plus"”没有导出的成员“FormInstance”。你是否指的是“FooterInstance”? 解决方法: 引入ElForm类型,在外重新定义FormInstance的类型为ElForm的实例类型 示例: import…

记录keras库中导入函数找不到的问题

1 . keras.preprocessing.text import Tokenizer 将最右边的点 " . " 修改成 " _ " : 2 . 相应函数/库找不到,在keras后面加一个api :

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件,类似STM32的STM32CubeMX工具软件。 📍AT32 TOOL系列工具下载地址:https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

C# WPF入门学习主线篇(二十八)—— 使用集合(ObservableCollection)

C# WPF入门学习主线篇(二十八)—— 使用集合(ObservableCollection) 在WPF中,数据绑定是构建动态和响应式用户界面的关键。ObservableCollection是一个特别有用的集合类型,它不仅支持数据绑定,还…

基于Elementui组件,在vue中实现多种省市区前端静态JSON数据展示并支持与后端交互功能,提供后端名称label和id

基于Elementui组件,在vue中实现多种省市区前端静态数据(本地JSON数据)展示并支持与后端交互功能,提供后端名称label和id 话不多说,先上图 1.支持传递给后端选中省市区的id和名称,示例非常完整&#xff0c…

【Java】线程池技术(二)ThreadPoolExecutor的基本定义

线程池初始化与定义 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)线程池构造方法的入参含义分别如下&…

C++的动态内存分配

使用new/delete操作符在堆中分配/释放内存 //使用new操作符在堆中分配内存int* p1 new int;*p1 2234;qDebug() << "数字是&#xff1a;" << *p1;//使用delete操作符在堆中释放内存delete p1;在分配内存的同时初始化 //在分配内存的时初始化int* p2 n…

chatgpt: linux 下用纯c 编写一按钮,当按钮按下在一新窗口显示hello world

用这个程序模板&#xff0c;就可以告别只能在黑框框的终端中编程了。 在 Linux 环境下使用纯 C 语言编写一个按钮&#xff0c;当按钮按下时&#xff0c;在一个新窗口显示 "Hello World"。我们可以使用 GTK 库来实现这个功能。GTK 是一个用于创建图形用户界面的跨平台…

第三十三篇-Ollama+AnythingLLM基本集成

AnythingLLM AnythingLLM专属私有知识库,可以使用本地OllamaLLM模型&#xff0c;可以上传文件&#xff0c;基于文件回答问题 启动ollama 参考 第二十五篇-Ollama-离线安装 第二十四篇-Ollama-在线安装 下载安装AnythingLLM https://useanything.com/downloadAnythingLLMDe…

C#使用NPOI库实现Excel的导入导出操作——提升数据处理效率的利器

文章目录 一、NPOI库简介二、安装与引入三、Excel的导入操作1.CSV格式导入2.XLS格式导入3. XLSX格式导入 四、Excel的导出操作1. CSV格式导出2. XLS格式导出3. XLSX格式导出 五、NPOI库的应用优势与改进方向总结 在日常工作学习中&#xff0c;我们经常需要处理Excel文件&#x…

【吊打面试官系列-Mysql面试题】什么是锁?

大家好&#xff0c;我是锋哥。今天分享关于 【什么是锁&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是锁&#xff1f; 答&#xff1a;数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

运维 Tips | IT工程师常用的8个USB引导启动器工具

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 【导语】本指南旨在深入探讨Linux上可用的前六个工具&#xff0c;以及Windows上使用两个U盘启动器生成及刻录工具&#xff0c;创建USB引导启动器用于引导系统ISO文件加载到计算机中&#xff0c;从…

LInux驱动开发笔记(十)SPI子系统及其驱动

文章目录 前言一、SPI驱动框架二、总线驱动2.1 SPI总线的运行机制2.2 重要数据结构2.2.1 spi_controller2.2.2 spi_driver2.2.3 spi_device2.2.4 spi_transfer2.2.5 spi_message 三、设备驱动的编写3.1 设备树的修改3.2 相关API函数3.2.1 spi_setup( )3.2.2 spi_message_init( …

在windows 台式机电脑部署GLM4大模型

参考这篇文章在windows笔记本电脑部署GLM4大模型_16g显卡本地部署glm4-CSDN博客 我的环境&#xff08;PC台式机电脑&#xff1a; 处理器 Intel(R) Core(TM) i9-14900K 3.20 GHz 机带 RAM 32.0 GB (31.8 GB 可用)、32G内存、NVIDIA RTX4080&#xff08;16G&#xff09;…

深入理解Open vSwitch(OVS):原理、架构与操作

一、引言 随着云计算和虚拟化技术的不断发展&#xff0c;网络虚拟化成为了构建灵活、可扩展网络架构的关键技术之一。Open vSwitch&#xff08;OVS&#xff09;作为一种功能强大的开源虚拟交换机&#xff0c;被广泛应用于云计算和虚拟化环境中&#xff0c;为虚拟机提供高效、灵…

前端调试技巧

1、利用console打印日志 2、利用debugger关键字&#xff0c;浏览器f12调用到方法debugger处会断点住&#xff0c;可以利用浏览器调试工具查看变量 a.监视表达式可以添加想要观察的变量 b.调用堆栈可以观察方法调用链 3、xhr断点 请求地址包含v1.0/banner_theme/pagelist&a…