输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

2023-09-14 23:52:32

效果视频:输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)_哔哩哔哩_bilibili

项目文件

code.py装载的是英文版本,图上显示英文标签及坐标,Chinese.py装载的是中文版本,图上显示中文标签等等,以及每一行代码几乎都有中文注释。code.py和Chinese.py是一样的代码。

1.数据

仿真平台

仿真模型分别获取单相接地故障、两相接地故障、两相间短路故障、三相接地故障、三相间短路故障和正常状态下的电流(Ia,Ib,Ic)大小和电压(Ua,Ub和Uc)大小。每种故障下获取1300行左右的数据

将故障区分为具体的不同类型(一共五种),再算上正常的状态,因此是六分类。这里随意举出每种类别的两个样本进行展示。

GCBAIaIbIcVaVbVc
1001-151.2918124-9.67745156385.800162260.400749853-0.132934945-0.267814907
1001-336.1861826-76.2832619518.328896580.312731934-0.123633156-0.189098779
1011-343.4870147104.56275133.7942853090.2720425010.011317575-0.283360076
1011-339.1254001105.4293167-0.2672412250.277820540.021756839-0.299577378
011019.38615173-785.553797768.7279081-0.210406869-0.00201120.212418069
011018.47841651-783.8619173767.9410527-0.217651204-0.002604510.220255714
0111506.5917463374.8825788-879.3449970.042029705-0.025636401-0.016393305
0111495.1384715387.4159615-880.42530960.042107683-0.025103056-0.017004627
1111-89.03263152-732.8168572821.9123732-0.0367594790.0052342190.03152526
1111-75.8022885-740.3563342816.2199695-0.036800630.0046859170.032114713
000010.5461862679.38231464-93.21467968-0.5376443450.548591338-0.010946993
00009.59094096580.11550744-92.99814299-0.5423905220.543819429-0.001428907

数据表格(开始位置)

数据表格(截止位置) 

 

2.代码流程:

  1. 导入所需的Python库,包括NumPy、Pandas、Seaborn、Matplotlib等。

  2. 设置Seaborn和Matplotlib的样式和主题,包括字体、颜色、图形大小、边缘颜色等。

  3. 从数据集中读取10行数据,并对其进行样式设置,以显示不同的背景颜色。

  4. 使用df_class.info()检查数据集中列的数据类型。

  5. 使用df_class.isnull().sum().sum()检查数据集中是否存在空值。

  6. 使用df_class.shape获取数据集的形状。

  7. 绘制关于"Ground Fault"的柱状图和饼图,以及关于"Line A"、"Line B"、"Line C"中Fault的柱状图和饼图。

  8. 合并不同列的Fault信息,创建一个新的列"Fault_Type"。

  9. 替换"Fault_Type"列中的值,以便进行可视化。

  10. 分析数据集的统计信息,包括均值、标准差等。

  11. 统计不同"Fault_Type"的计数。

  12. 绘制"Fault_Type"计数的柱状图和饼图。

  13. 绘制电流和电压的图形。

  14. 绘制电压和电流的分布图,包括直方图、KDE图和箱线图。

  15. 选择没有故障的数据,并绘制相应的电流和电压图。

  16. 绘制没有故障数据的电流和电压的分布图。

  17. 选择不同Fault Type的数据,并绘制相应的电流和电压图。

  18. 绘制不同Fault Type数据的电流和电压的分布图。

  19. 将分类变量转换为数值变量,使用LabelEncoder将"Fault_Type"列编码为数值。

  20. 分离自变量和因变量。

  21. 划分训练集和测试集。

  22. 使用不同的机器学习模型,包括逻辑回归、决策树、随机森林、XGBoost和支持向量机进行训练和预测。

  23. 绘制混淆矩阵以评估模型性能。

  24. 绘制决策树的树状图。

  25. 创建模型性能汇总表,包括训练准确率和模型准确率得分。

  26. 使用随机森林和决策树模型进行预测,并将实际值和预测值进行对比。

3.效果

 

 

 

 

 

 

 

随机森林方法

决策树

XGBoost预测

支持向量机预测

逻辑回归

 

对代码和数据集感兴趣的可以关注最后一行

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
 
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix


#代码和数据集的压缩包:https://mbd.pub/o/bread/mbd-ZJ6Vmpdy

更多推荐

【JVM】类加载器

类与类加载器类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加

springboot实战(七)之jackson配置前后端交互下划线转驼峰&对象序列化与反序列化

目录环境:1.驼峰转下划线配置1.1单个字段命名转化使用@JsonProperty注解1.2单个类进行命名转化使用@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)注解3.全局命名策略配置2.序列化以及反序列化2.1序列化2.2反序列化3.自定义序

ref和reactive区别

使用区别reactive定义引用数据类型,ref定义基本类型reactive定义的变量直接使用,ref定义的变量使用时需要.value模板中均可直接使用,vue帮我们判断了是reactive还是ref定义的(通过__v_isRef属性),从而自动添加了.value。//定义letcount=ref(0);letobj=

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感,或者需要记录会议的重要内容,或者是学校课堂上的笔记,你通常会拿出手机,因为它总是在你身边,随时可用。这时候,一款好的记笔记App可以让你事半功倍。敬业签是一款全面的云端备忘记事软件,支持在Windows/Web/Android/iOS/Mac/HarmonyOS等端口同步和编辑记事内

机器学习技术(十)——决策树算法实操,基于运营商过往数据对用户离网情况进行预测

机器学习技术(十)——决策树算法实操文章目录机器学习技术(十)——决策树算法实操一、引言二、数据集介绍三、导入相关依赖库四、读取并查看数据1、读取数据2、查看数据五、数据预处理1、选择数据2、数据转码六、建模与参数优化1、训练模型2、评估模型3、调参优化七、模型可视化八、决策树实操总结一、引言决策树部分主要包含基于py

django_model_一对一映射

settings相关配置#settings.py...DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'djangos','USER':'root','PASSWORD':'990212','HOST':'localhost','PORT

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制以及拥塞控制1.滑动窗口(效率机制)2.流量控制(安全机制)3.拥塞控制(安全机制)1.滑动窗口(效率机制)TCP使用确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答。收到ACK后再发送下一个数据段。这样做有一个比较大的缺点,就是性能较差。尤其是数据往返的时间较长的时候。既然这样一发一收的

大厂超全安全测试--关于安全测试的分类及如何测试

安全测试(总结)1.jsonNP劫持(其实json劫持和jsonNP劫持属于CSRF跨站请求伪造)的攻击范畴,解决方法和CSRF一样定义:构造带有jsonp接口的恶意页面发给用户点击,从而将用户的敏感信息通过jsonp接口传输到攻击者服务器json语法规则:数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存

循环神经网络——中篇【深度学习】【PyTorch】【d2l】

文章目录6、循环神经网络6.4、循环神经网络(`RNN`)6.4.1、理论部分6.4.2、代码实现6.5、长短期记忆网络(`LSTM`)6.5.1、理论部分6.5.2、代码实现6.6、门控循环单元(`GRU`)6.6.1、理论部分6.6.2、代码实现6、循环神经网络6.4、循环神经网络(RNN)6.4.1、理论部分原理

18.3 【Linux】登录文件的轮替(logrotate)

18.3.1logrotate的配置文件logrotate主要是针对登录文件来进行轮替的动作,他必须要记载“在什么状态下才将登录文件进行轮替”的设置。logrotate这个程序的参数配置文件在:/etc/logrotate.conf/etc/logrotate.d/logrotate.conf才是主要的参数文件,至于l

Android官方推荐 无需向应用授予的照片选择器工具

官网链接Photopicker|AndroidDevelopers不能跳转链接看这Photopicker照片选择器对话框会显示在您的设备上的媒体文件中。选择一张照片与应用程序分享。图1.照片选择器提供了一个直观的用户界面,用于与您的应用程序分享照片。照片选择器提供了一个可浏览、可搜索的界面,向用户呈现了他们的媒体库,按

热文推荐