来杯 高校大数据挑战赛作为3月份唯一一场数模比赛正式开赛,基于初步选题人数评估,B题选题人数预计将达到本届比赛的70%以上。因此,本文对B题 新能源电动汽车的故障预警研究 进行详详细先容
注1:各赛题获奖按照百分比获奖,不会由于选题人数多,获奖比例而降低.
注2:题目给出文献可重要阅读 基于数据驱动的新能源汽车动力电池故障诊断与预警研究 (硕士学位论文,长安大学).硕士,第一、四章节与本问题高度重合,可在阅读完题目后,进行阅读该论文。
B题 新能源电动汽车的故障预警研究
该题涉实时序数据分析、故障诊断与推测建模,重要挑战是从历史行驶数据中提取有用信息,并创建有用的推测模型。详细而言,首先辈行必要的数据预处置惩罚(数据洗濯、数据形貌性分析等),基于预处置惩罚结果进行数据分析筛选出与故障报警的重要影响因素。基于筛选出的重要特征构建电动汽车故障预警模型,并使用十月份的数据进行实例推测。
问题一:数据预处置惩罚、故障报警次数统计与分析
首先,进行数据预处置惩罚,首先将全部数据归并到同一文件中以便统一进行处置惩罚。通常表格文件归并时,最多只能表现100万行,该数据前九个月归并后一共116 6205行,因此这里比较推荐使用代码归并,详细如下所示
import pandas as pd
import os
# 指定包罗CSV文件的文件夹路径
folder_path = r'C:\Users\24404\PycharmProjects\pythonProject1\将来杯\附件'
# 要归并的文件名列表
file_names = ['month_01.csv', 'month_02.csv', 'month_03.csv', 'month_04.csv',
'month_05.csv', 'month_06.csv', 'month_07.csv', 'month_08.csv', 'month_09.csv']
# 创建一个空列表,用于存储每个CSV文件的DataFrame
dfs = []
# 遍历每个文件,读取它并将其添加到列表中
for file in file_names:
file_path = os.path.join(folder_path, file) # 获取完整的文件路径
try:
df = pd.read_csv(file_path, encoding='utf-8') # 尝试使用utf-8编码读取CSV文件
except UnicodeDecodeError: # 假如出现解码错误,尝试使用GBK编码
df = pd.read_csv(file_path, encoding='GBK') # 使用GBK编码读取
dfs.append(df) # 将DataFrame添加到列表中
# 使用pd.concat()将所有DataFrame按行归并
merged_df = pd.concat(dfs, ignore_index=True)
# 可选:将归并后的DataFrame保存为新的CSV文件
merged_df.to_csv(os.path.join(folder_path, 'merged_data.csv'), index=False)
对于归并后的数据,我们需要进行必要的缺失值以及异常值处置惩罚。对于缺失值,我们使用代码对归并后的空缺项进行识别,得出并无缺失值。因此,本文的工作重要针对异常值处置惩罚,处置惩罚分为两部分,一、模型处置惩罚;二、人为判定。
我们采用模型判定将边沿值判定为异常数据,对于部分异常数据符合实际环境(急刹车、点刹、等红绿灯等异常数据)联合题目给出取值范围进一步进行确定。
可以使用箱形图(Box plot)或Z-score方法检测异常值。二者重要针对于不同的分布方式数据,对于正态分布数据使用Z-score方法,对于非正态分布数据使用箱形图(Box plot)。对于归并后的数据初步进行判定
正态分布的列: []
非正态分布的列: ['车辆状态', '充电状态', '车速', '累计里程', '总电压', '总电流', 'SOC', 'DC-DC状态', '绝缘电阻', '电池单体电压最高值', '电池单体电压最低值', '最高温度值', '最低温度值', '最高报警品级']
因此,对非正态分布的列使用箱线图进行判定得出结果如下所示
车辆状态 列的异常值数量: 148523
充电状态 列的异常值数量: 127205
车速 列的异常值数量: 2032
累计里程 列的异常值数量: 27
总电压 列的异常值数量: 10
总电流 列的异常值数量: 219886
SOC 列的异常值数量: 0
DC-DC状态 列的异常值数量: 24375
绝缘电阻 列的异常值数量: 70290
电池单体电压最高值 列的异常值数量: 0
电池单体电压最低值 列的异常值数量: 10
最高温度值 列的异常值数量: 21705
最低温度值 列的异常值数量: 16784
最高报警品级 列的异常值数量: 38908
部分检测结果如下所示
基于识别后的结果,需要对数据进行人为判定,结果下述取值范围
各指标取值区间
| 字段名称
| 说明
| 车速
| 有用值范围:0~2200,最小计量单元:0.1km/h,
| 累计里程
| 有用值范围:0~9999999,最小计量单元:0.1km。
| 总电压
| 有用值范围: 0~10000,最小计量单元: 0.1V
| 总电流
| 有用值范围: 0~20000,最小计量单元: 0.1A
| SOC
| 有用值范围:0~100,最小计量单元:1%
| DC-DC状态
| 1: 工作; 2:断开
| 绝缘电阻
| 有用范围 0~60000,最小计量单元: 1KΩ
| 驱动电机控制器温度
| 有用值范围:0~250,最小计量单元:1℃
| 驱动电机转速
| 偏移量 1000rpm,表示-1000rpm~10000rpm
| 驱动电机温度
| 有用值范围:0~250,最小计量单元:1℃
| 电机控制器输入电压
| 有用值范围: 0~10000,最小计量单元: 0.1V
| 电机控制器直流母线电流
| 有用值范围: 0~20000,最小计量单元: 0.1A
| 电池单体电压最高值
| 有用值范围:0~15 000,最小计量单元:0.001V
| 电池单体电压最低值
| 有用值范围:0~15 000,最小计量单元:0.001V
| 最高温度值
| 有用值范围:0~250,最小计量单元:1℃
| 最低温度值
| 有用值范围:0~250,最小计量单元:1℃
|
使用处置惩罚后的数据对故障报警以及用车环境统计
问题二:故障报警的重要影响因素分析
通常环境下,电动汽车的车辆数据、电机数据以及电池数据内部相 互之间可能存在某种关联性,数据中包罗有 0-3 级别的故障报警指标,请根据附件中 1-9 月的汽车数据,选择合适的大数据方法找出造成电动汽车不同级别故障报警的重要影响因素。
该问题最简朴有用的做法就是进行相关性分析,绘制矩阵热力图进行形貌分析选择相关性较好的几个指标。
较为复杂的做法有
- 盘算每个特征与目标变量(最高报警品级)之间的互信息,评估特征与目标之间的非线性关系。
- 使用 LASSO 回归(带 L1 正则化的线性回归)来选择重要特征。通过回归系数的巨细来评估特征的重要性,并可视化回归系数。
- 使用决定树模型盘算每个特征的重要性。
- 使用随机丛林模型盘算每个特征的重要性。
- 其他各种方法等
上述方法部分结果如下所示
最高报警品级 1.000000
SOC 0.005544
电池单体电压最高值 0.003824
总电压 0.003671
DC-DC状态 0.003520
绝缘电阻 0.003140
电池单体电压最低值 0.003089
车辆状态 0.002687
充电状态 0.000825
车速 0.000120
总电流 -0.002462
最高温度值 -0.057690
最低温度值 -0.057840
累计里程 -0.091469
问题三:构建电动汽车故障预警模型
对于该问题,构建模型分类模型对不同时间下的故障进行分类使用,分类0.1.2.3。
分类模型:如逻辑回归、支持向量机(SVM)、决定树、随机丛林等,用于推测故障报警的品级。根据问题二中的分析结果,选择影响故障报警的重要特征
模型结果:
- 使用交叉验证(如K-fold交叉验证)来评估模型的泛化能力,并通过网格搜索或随机搜索调优超参数。
- 性能评价:、常见的评估指标有正确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值、ROC曲线等。对于回归问题,常见的评估指标有均方偏差(MSE)、均方根偏差(RMSE)等。
问题四:第 10 个月故障推测
根据问题三中创建的故障预警模型,使用附件中1-9月的数据进行训练,并将训练好的模型应用于第10个月的缺失数据,推测其故障报警品级。
推测过程:输入第10个月的数据(不含故障报警信息),通过模型盘算每个时间点可能发生的故障报警品级。
问题五:车辆使用建议
基于前面问题的分析,联合充电、故障查验、用车规律等,给出车辆的使用建议。可以从以下几个方面进行总结:(虚伪的,使用ai自动生成,实际应该联合问题二三四问的结果进行参考)
充电建议:如避免过度充电,定期查抄充电设备的状态,避免长时间低电量使用。
故障预防与查验建议:定期查抄电池、电机及控制器的温度、压力等,特别关注过充、过放电等问题。
用车习惯建议:驾驶时避免急加速、急刹车,保持平稳驾驶,减少对电池的侵害。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |