首页 > 编程语言 >Python电能质量扰动信号分类(六)基于扰动信号特征提取的超强机器学习识别模型

Python电能质量扰动信号分类(六)基于扰动信号特征提取的超强机器学习识别模型

时间:2024-10-01 12:51:36浏览次数:8  
标签:分类 Python 模型 XGBoost 信号 扰动

创新度高!!!需要发论文的同学即买即用

 往期精彩内容:

Python-电能质量扰动信号数据介绍与分类-CSDN博客

Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客

Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客

Python电能质量扰动信号分类(三)基于Transformer的一维信号分类模型-CSDN博客

Python电能质量扰动信号分类(四)基于CNN-BiLSTM的一维信号分类模型-CSDN博客

Python电能质量扰动信号分类(五)基于CNN-Transformer的一维信号分类模型-CSDN博客

电能质量Python实现全家桶-CSDN博客

前言

本文基于Python仿真的电能质量扰动信号,先经过数据预处理进行数据集的制作和加载,然后通过特征提取机器学习方法进行扰动信号识别,特征提取是通过从原始PQD信号中提取有意义的特征来减少数据维度,并捕捉到信号的关键信息,机器学习方法能够基于这些特征建立模型,并通过训练和学习来识别不同的扰动信号。

Python仿真电能质量扰动信号的详细介绍可以参考下文(文末附10分类数据集):

Python-电能质量扰动信号数据介绍与分类-CSDN博客

部分扰动信号类型波形图如下所示:

1 数据集和特征提取

1.1 数据集导入

在参考IEEE Std1159-2019电能质量检测标准与相关文献的基础上构建了扰动信号的模型,生成包括正常信号在内的10中单一信号和多种复合扰动信号。参考之前的文章,进行扰动信号10分类的预处理:

第一步,按照公式模型生成单一信号

单一扰动信号可视化:

根据信号时间步长为 1024 制作数据集

形成5000个样本, 单个样本长度 1024,加上一个标签类别。

1.2 扰动信号特征提取

(1) 峭度(Kurtosis):衡量信号的尖锐程度,用于检测信号中的高频成分

(2) 熵值(Entropy):衡量信号的复杂程度和随机性,用于检测信号的频谱特性

(3) 分形值(Fractal Dimension):衡量信号的自相似性和复杂度,用于分析信号的分形特征

(4) 波形指标(Waveform Indicators):包括峰值因子、脉冲因子、裕度因子等,用于分析信号的时域特征

(5) 频谱指标(Spectral Indicators):包括峰值频率、能量比值、谱线形指标等,用于分析信号的频域特征

(6) 频域指标(Time-Frequency Indicators):包括瞬时频率、瞬时能量等,用于分析信号的时频特征

(7) 统计特征(Statistical Features):包括均值、方差、偏度等,用于描述信号的统计特性

(8) 小波包特征(Wavelet Packet Features):通过小波变换提取的特征,用于分析信号的时频局部特性

(9) 振动特征(Vibration Features):包括峰值振动、有效值振动等,用于描述信号的振动特性

选择了多种特征提取方法来捕捉信号的不同特征,共提取9类13个特征指标,来作为机器学习模型的训练与识别。

2超强模型XGBoost——原理介绍

2.1 原理介绍

论文链接:

XGBoost | Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining

GBoost模型(eXtreme Gradient Boosting)是一种梯度提升框架,由Tianqi Chen在2014年开发,并在机器学习领域广泛应用。XGBoost的核心思想是通过迭代地训练多个弱学习器,并将它们组合起来,实现强大的预测能力。它在梯度提升算法的基础上进行了改进和优化,具有高效、灵活和可扩展的特点。

下面是XGBoost的一些关键特性和原理:

1. 梯度提升:XGBoost使用了梯度提升算法,也称为增强学习(Boosting)算法。它通过迭代地训练多个弱学习器,并通过梯度下降的方式来优化模型的预测能力。每个弱学习器都是在前一个弱学习器的残差上进行训练,从而逐步减小预测误差。

2. 基于树的模型:XGBoost采用了基于树的模型,即决策树。决策树是一种非常灵活和可解释的模型,能够学习到复杂的非线性关系。XGBoost使用了CART(Classification and Regression Trees)作为默认的基学习器,每个决策树都是通过不断划分特征空间来实现分类或回归任务。

3. 正则化策略:为了防止过拟合,XGBoost引入了正则化策略。它通过控制决策树的复杂度来限制模型的学习能力。常用的正则化策略包括限制决策树的最大深度、叶子节点的最小样本数和叶子节点的权重衰减等。

4. 特征选择和分裂:XGBoost在构建决策树时,通过特征选择和分裂来最大化模型的增益。特征选择基于某种评估准则(如信息增益或基尼系数),选择对当前节点的划分最有利的特征。特征分裂则是确定特征划分点的过程,使得划分后的子节点能够最大程度地减小预测误差。

5. 并行计算:为了提高模型的训练速度,XGBoost使用了并行计算的策略。它通过多线程和分布式计算等技术,将训练任务分解为多个子任务,并在不同的处理器上同时进行计算。这样可以加快模型的训练速度,特别是在处理大规模数据集时表现优异。

6. 自定义损失函数:XGBoost允许用户自定义损失函数,以适应不同的任务和需求。用户可以根据具体问题的特点,定义适合的损失函数,并在模型训练过程中使用它。

XGBoost模型通过梯度提升算法和基于树的模型,在许多机器学习任务中都取得了很好的效果,包括分类、回归、排序和推荐等。我们利用其高效、灵活和可扩展的特性,使用XGBoost来构建一个梯度提升模型,通过迭代地训练多个决策树来实现轴承故障识别。

2.2 特征数据集制作

3 模型评估和对比

3.1 随机森林分类模型

模型分数、准确率、精确率、召回率、F1 Score

扰动信号十分类混淆矩阵

3.2 支持向量机SVM分类模型

模型分数、准确率、精确率、召回率、F1 Score

扰动信号十分类混淆矩阵:

3.3 XGBoost分类模型

模型分数、准确率、精确率、召回率、F1 Score

扰动信号十分类混淆矩阵:

实验结果表明,所提取的各种特征都对电能质量扰动信号识别有一定的贡献。峭度、熵值和分形值能够帮助捕捉信号的尖锐程度、复杂程度和自相似性,从而有效地区分不同类型的扰动信号。波形指标、频谱指标和频域指标能够提供信号的时域和频域特征,有助于识别扰动信号的时频特性。统计特征、小波包特征和振动特征则能够描述信号的统计特性和振动特性,从而更好地区分扰动信号。

对比可以看出来, XGBoost分类模型性能最好,在训练集、测试集上的表现最优,模型分数也是最高,在扰动信号识别中取得了良好的效果。通过准确地捕捉到信号的特征和模式,能够对不同类型和程度的信号类型进行准确的识别和分类,准确率达到98%,速度快,性能好,创新度高。

代码、数据整理如下:

标签:分类,Python,模型,XGBoost,信号,扰动
From: https://blog.csdn.net/2402_85668383/article/details/142652011

相关文章

  • Pytorch-CNN轴承故障一维信号分类(二)
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!Python轴承故障诊断(一)短时傅里叶变换STFT-CSDN博客Python轴承故障诊断(二)连续小波变换CWT-CSDN博客......
  • 电能质量Python实现全家桶
    往期精彩内容:Python-电能质量扰动信号数据介绍与分类-CSDN博客Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客Python电能质量扰动信号分类(三)基于Transformer的一维信号分类模型......
  • Python实现剪刀石头布
    文章目录目录整体架构流程代码解释演示效果小结整体架构流程1.需求分析参与者:玩家,电脑 玩家   手动输入 电脑   随机出拳2.判断输赢 玩家赢 电脑赢  平局流程1.出拳(玩家,电脑) 玩家-输入  电脑-随机2.判断输赢 2.1玩家胜 ......
  • 【python爬虫可以获取到谷歌影像吗?】如何有效下载谷歌影像?
    【python爬虫可以获取到谷歌影像吗?】如何有效下载谷歌影像?【python爬虫可以获取到谷歌影像吗?】如何有效下载谷歌影像?文章目录【python爬虫可以获取到谷歌影像吗?】如何有效下载谷歌影像?前言1.使用GoogleEarthEngine来获取影像数据Step1:注册GoogleEarthEngineS......
  • [Python手撕]二叉树两节点之间的距离
    classTreeNode:def__init__(self,value=0,left=None,right=None):self.value=valueself.left=leftself.right=rightdefparent(root,p,q):ifroot==porroot==q:returnrootleft,right=None,None......
  • [Python手撕]部分排序
    classSolution:defsubSort(self,array:List[int])->List[int]:n=len(array)start,end=-1,-1#从前往后找到第一个逆序foriinrange(n-1):ifarray[i]>array[i+1]:start=i+1......
  • COMM 337 Python code in your notebook
    COMM337:Homework2DUEDATE:Oct2,202412:00pmThisisHW2Pythonassignment.Thereare13problems.Eachproblemis7pointsandthetotalis100points(9forfollowingfile/printformat).Instructions:Latesubmissionswillnotbeaccepted.Submit......
  • [python] 基于PyOD库实现数据异常检测
    PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型数据集,PyOD提供了50多种算法以满足用户的需求。PyOD的特点包括:统一且用户友......
  • Python 进程:掌控并发世界的钥匙
    引言进程,作为一种操作系统的基本调度单元,它不仅能够独立执行程序,还支持并发操作,这对于提升程序效率、改善用户体验至关重要。特别是在Python这样的解释型语言中,由于全局解释器锁(GIL)的存在,使得多线程在CPU密集型任务上的表现不如预期。此时,利用多进程便成为了一种有效的解决策略。......
  • Python 并发新境界:探索 `multiprocessing` 模块的无限可能
    引言随着硬件技术的发展,多核处理器已经成为标准配置。这意味着我们的计算机拥有执行多个任务的能力。然而,默认情况下,Python程序由于全局解释器锁(GIL)的存在,并不能充分利用这些核心资源。这就引出了multiprocessing模块的重要性——它通过创建独立进程来绕过GIL限制,从而实现真正的并......