效果视频:输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)_哔哩哔哩_bilibili
项目文件
code.py装载的是英文版本,图上显示英文标签及坐标,Chinese.py装载的是中文版本,图上显示中文标签等等,以及每一行代码几乎都有中文注释。code.py和Chinese.py是一样的代码。
1.数据
仿真平台
仿真模型分别获取单相接地故障、两相接地故障、两相间短路故障、三相接地故障、三相间短路故障和正常状态下的电流(Ia,Ib,Ic)大小和电压(Ua,Ub和Uc)大小。每种故障下获取1300行左右的数据
将故障区分为具体的不同类型(一共五种),再算上正常的状态,因此是六分类。这里随意举出每种类别的两个样本进行展示。
G |
C |
B |
A |
Ia |
Ib |
Ic |
Va |
Vb |
Vc |
1 |
0 |
0 |
1 |
-151.2918124 |
-9.677451563 |
85.80016226 |
0.400749853 |
-0.132934945 |
-0.267814907 |
1 |
0 |
0 |
1 |
-336.1861826 |
-76.28326195 |
18.32889658 |
0.312731934 |
-0.123633156 |
-0.189098779 |
1 |
0 |
1 |
1 |
-343.4870147 |
104.5627513 |
3.794285309 |
0.272042501 |
0.011317575 |
-0.283360076 |
1 |
0 |
1 |
1 |
-339.1254001 |
105.4293167 |
-0.267241225 |
0.27782054 |
0.021756839 |
-0.299577378 |
0 |
1 |
1 |
0 |
19.38615173 |
-785.553797 |
768.7279081 |
-0.210406869 |
-0.0020112 |
0.212418069 |
0 |
1 |
1 |
0 |
18.47841651 |
-783.8619173 |
767.9410527 |
-0.217651204 |
-0.00260451 |
0.220255714 |
0 |
1 |
1 |
1 |
506.5917463 |
374.8825788 |
-879.344997 |
0.042029705 |
-0.025636401 |
-0.016393305 |
0 |
1 |
1 |
1 |
495.1384715 |
387.4159615 |
-880.4253096 |
0.042107683 |
-0.025103056 |
-0.017004627 |
1 |
1 |
1 |
1 |
-89.03263152 |
-732.8168572 |
821.9123732 |
-0.036759479 |
0.005234219 |
0.03152526 |
1 |
1 |
1 |
1 |
-75.8022885 |
-740.3563342 |
816.2199695 |
-0.03680063 |
0.004685917 |
0.032114713 |
0 |
0 |
0 |
0 |
10.54618626 |
79.38231464 |
-93.21467968 |
-0.537644345 |
0.548591338 |
-0.010946993 |
0 |
0 |
0 |
0 |
9.590940965 |
80.11550744 |
-92.99814299 |
-0.542390522 |
0.543819429 |
-0.001428907 |
数据表格(开始位置)
数据表格(截止位置)
2.代码流程:
-
导入所需的Python库,包括NumPy、Pandas、Seaborn、Matplotlib等。
-
设置Seaborn和Matplotlib的样式和主题,包括字体、颜色、图形大小、边缘颜色等。
-
从数据集中读取10行数据,并对其进行样式设置,以显示不同的背景颜色。
-
使用df_class.info()
检查数据集中列的数据类型。
-
使用df_class.isnull().sum().sum()
检查数据集中是否存在空值。
-
使用df_class.shape
获取数据集的形状。
-
绘制关于"Ground Fault"的柱状图和饼图,以及关于"Line A"、"Line B"、"Line C"中Fault的柱状图和饼图。
-
合并不同列的Fault信息,创建一个新的列"Fault_Type"。
-
替换"Fault_Type"列中的值,以便进行可视化。
-
分析数据集的统计信息,包括均值、标准差等。
-
统计不同"Fault_Type"的计数。
-
绘制"Fault_Type"计数的柱状图和饼图。
-
绘制电流和电压的图形。
-
绘制电压和电流的分布图,包括直方图、KDE图和箱线图。
-
选择没有故障的数据,并绘制相应的电流和电压图。
-
绘制没有故障数据的电流和电压的分布图。
-
选择不同Fault Type的数据,并绘制相应的电流和电压图。
-
绘制不同Fault Type数据的电流和电压的分布图。
-
将分类变量转换为数值变量,使用LabelEncoder将"Fault_Type"列编码为数值。
-
分离自变量和因变量。
-
划分训练集和测试集。
-
使用不同的机器学习模型,包括逻辑回归、决策树、随机森林、XGBoost和支持向量机进行训练和预测。
-
绘制混淆矩阵以评估模型性能。
-
绘制决策树的树状图。
-
创建模型性能汇总表,包括训练准确率和模型准确率得分。
-
使用随机森林和决策树模型进行预测,并将实际值和预测值进行对比。
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