核主成分分析(KPCA)

2.2.1版本(988 KB)由 磕碰邱
MATLAB代码降维,故障检测,故障诊断使用KPCA。

2.7 k下载

更新2022年2月21日

从GitHub

在GitHub上查看许可证

核主成分分析(KPCA)

MATLAB代码降维,故障检测,故障诊断使用KPCA

2.2版,2021年5月14日

电子邮件:iqiukp@outlook.com

在文件交换中查看内核主成分分析(KPCA)


主要特点

  • 易于使用的API训练和测试KPCA模型
  • 万博1manbetx支持降维、数据重构、故障检测和故障诊断
  • 多种核函数(线性、高斯、多项式、sigmoid、拉普拉斯)
  • 训练和测试结果的可视化
  • 根据给定的解释电平或给定的数来确定组件数

通知

  • 仅支持高斯内核的故障诊断。万博1manbetx
  • 此代码仅供参考。

如何使用

01.内核函数

一个名为内核定义为计算核函数矩阵。

% {类型,线性:k(x,y) = x'*y多项式:k(x,y) = (γ*x'*y+c)^d高斯:k(x,y) = exp(-γ*||x-y||^2)Sigmoid: k(x,y) = tanh(γ*x'*y+c)拉普拉斯函数:k(x,y) = exp(-γ*||x-y||)度- d偏移量- cγ - γ%}内核=内核类型高斯γ价值);内核=内核类型多项式学位价值);内核=内核类型线性);内核=内核类型乙状结肠γ价值);内核=内核类型拉普拉斯算子γ价值);

例如,计算之间的核矩阵XY

X=兰德52);Y=兰德3.2);内核=内核类型高斯γ2);kernelMatrix=内核computeMatrixXY);>>kernelMatrixkernelMatrix=0.56840.56070.40070.46510.83830.50910.83920.71160.98340.47310.88160.80520.50340.98070.7274

02.简单的KPCA降维模型

clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ helix.mat数据数据)内核=内核类型高斯γ2);参数=结构体numComponents2,……kernelFunc内核);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车数据); mapping datamappingData=kpca分数可视化kplot=KernelPCAVisualization();可视化映射数据kplot分数kpca

训练结果(降维):

* * *KPCA模型培训完成了* * *运行时间= 0.2798秒内核函数=高斯数量样本的数量= 1000数量特征= 3数量分量= 2数量T2报警= 135数量SPE告警= 0精度T2 = 86.5000精度的SPE = 100.0000

另一个使用香蕉形状数据的应用程序:

03.简单的KPCA重建模型

clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ circle.mat数据数据)内核=内核类型高斯γ0.2);参数=结构体numComponents2,……kernelFunc内核);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车数据); reconstructed datareconstructedData=kpcanewData可视化kplot=KernelPCAVisualization();kplot重建kpca

04.元件编号的确定

组件编号可以根据给定的解释级别或给定的编号确定。

案例1

组件的数量由给定的解释级别决定。给定的被解释级别应该是0 <被解释级别< 1。例如,当被解释级别设置为0.75时,参数应设置为:

参数=结构体numComponents0.75,……kernelFunc内核);

代码是

clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ TE.mat数据trainData)内核=内核类型高斯γ1/128^2);参数=结构体numComponents0.75,……kernelFunc内核);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车trainData);可视化kplot=KernelPCAVisualization();kplotcumContributionkpca

如图所示,组分数为21时,累积贡献率为75.2656%,超过给定的解释水平0.75。

案例2

组件的数量由给定的数量决定。例如,当给定的数字设置为24时,参数应该设置为:

参数=结构体numComponents24,……kernelFunc内核);

代码是

clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ TE.mat数据trainData)内核=内核类型高斯γ1/128^2);参数=结构体numComponents24,……kernelFunc内核);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车trainData);可视化kplot=KernelPCAVisualization();kplotcumContributionkpca

如图所示,当组分数为24时,累积贡献率为80.2539%。

05.故障检测

使用KPCA (TE过程数据)进行故障检测的演示

clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ TE.mat数据trainDatatestData)内核=内核类型高斯γ1/128^2);参数=结构体numComponents0.65,……kernelFunc内核);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车trainData);测试KPCA模型结果=kpca测试testData);可视化kplot=KernelPCAVisualization();kplotcumContributionkpcakplottrainResultskpcakplot检测结果kpca结果

训练结果如下:

* * *KPCA模型培训完成了* * *运行时间= 0.0986秒内核函数=高斯数量样本数量= 500数量特征数= 52数量分量= 16数量T2告警= 16数量SPE告警= 17精度T2 = 96.8000精度的SPE = 96.6000

测试结果如下

* * *KPCA模型测试完成了* * *运行时间= 0.0312秒数量测试数据= 960数量T2报警= 799数量SPE告警= 851

06.故障诊断

请注意

  • 如果要计算某一时刻的CPS,需要将开始时间设置为结束时间。例如,'diagnosis', [500,500]
  • 如果要计算一段时间内CPS的平均值,需要分别设置开始时间和结束时间。“诊断”,[300,500]
  • 故障诊断模块仅支持高斯核函数,当训练数据量较大时,可能需要较长的时间。万博1manbetx
clc清晰的所有关闭所有目录genpath松材线虫病))负载\ \ TE.mat数据trainDatatestData)内核=内核类型高斯γ1/128^2);参数=结构体numComponents0.65,……kernelFunc内核,……诊断, (300500]);构建一个KPCA对象kpca=KernelPCA参数);训练KPCA模型kpca火车trainData);测试KPCA模型结果=kpca测试testData);可视化kplot=KernelPCAVisualization();kplotcumContributionkpcakplottrainResultskpcakplot检测结果kpca结果kplot诊断结果

诊断结果:

* * *的错诊断* * *的错诊断开始……的错诊断完成。运行时间= 18.2738秒开始点= 300结束点= 500的错变量(T2) = 44 1的错变量(SPE) = 1 44 18

引用作为

邱克鹏(2023)。核主成分分析(KPCA)GitHub (https://github.com/iqiukp/KPCA-MATLAB)。检索

MATLAB版本兼容性
使用R2021b创建
兼容R2016b及后续版本
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

无法下载使用GitHub默认分支的版本

版本 发表 发布说明
2.2.1

*增加描述

2.2

请访问https://github.com/iqiukp/Kernel-Principal-Component-Analysis-KPCA有关详细信息。

2.1.2

1.增加了一些描述

2.1.1

1.增加了一些描述

2.1

1.增加了对数据万博1manbetx重构的支持

2.0

1.采用OOP重写部分模块。
2.增加了对多个万博1manbetx内核函数的支持。
3.修正了一些错误。
4.加快故障诊断模块的运行速度。

1.2

1.修正了一些错误
2.新增动态KPCA(DKPCA)

1.1.1

1.修正了一些错误
2.新增故障诊断

1.1

1.修正了一些错误
2.新增故障诊断

1.0.0

要查看或报告此GitHub插件中的问题,请访问GitHub库
要查看或报告此GitHub插件中的问题,请访问GitHub库