核主成分分析(KPCA)

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

2.8 k下载

更新2022年2月21日

从GitHub

查看许可GitHub

核主成分分析(KPCA)

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

版本2.2,14 - 5 - 2021

电子邮件:iqiukp@outlook.com

核主成分分析(KPCA)在文件交换


主要特点

  • 本届API KPCA模型训练和测试
  • 金宝app对降维的支持,数据重建、故障检测和故障诊断
  • 多个类型的内核函数(线性、高斯、多项式、乙状结肠、拉普拉斯算子)
  • 可视化的训练和测试结果
  • 组件数量确定基于给定的解释水平或给定的数字

通知

  • 只有故障诊断的高斯内核支持。金宝app
  • 这段代码仅供参考。

如何使用

01。内核函数

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

% {类型,线性:k (x, y) y = x”*多项式:k (x, y) =(γ* x ' * y + c) ^ d高斯:k (x, y) = exp(-γ* | | x - y | | ^ 2)乙状结肠:k (x, y) =双曲正切(γ* x ' * y + c)拉普拉斯算子:k (x, y) = exp(-γ* | | x - y | |)度- d抵消- cγ-γ%}内核=内核(类型,高斯,γ,价值);内核=内核(类型,多项式,学位,价值);内核=内核(类型,线性);内核=内核(类型,乙状结肠,γ,价值);内核=内核(类型,拉普拉斯算子,γ,价值);

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

X=兰德(5,2);Y=兰德(3,2);内核=内核(类型,高斯,γ,2);kernelMatrix=内核computeMatrix(X,Y);> >kernelMatrixkernelMatrix=0.56840.56070.40070.46510.83830.50910.83920.71160.98340.47310.88160.80520.50340.98070.7274

02。简单的KPCA模型降维

clc清晰的所有关闭所有目录(genpath(松材线虫病))负载(\ \ helix.mat数据,数据)内核=内核(类型,高斯,γ,2);参数=结构体(numComponents,2,……kernelFunc,内核);%建立一个KPCA对象kpca=KernelPCA(参数);%火车KPCA模型kpca火车(数据);% mapping datamappingData=kpca分数;%可视化kplot=KernelPCAVisualization();%visulize映射数据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);参数=结构体(numComponents,2,……kernelFunc,内核);%建立一个KPCA对象kpca=KernelPCA(参数);%火车KPCA模型kpca火车(数据);% reconstructed datareconstructedData=kpcanewData;%可视化kplot=KernelPCAVisualization();kplot重建(kpca)

04。组件数量确定

组件数量可以确定基于给定的解释水平或给定的数字。

案例1

组件的数量是由给定的解释水平。给定的解释水平应该是0 < < 1解释水平。例如,当解释水平设置为0.75,这个参数应该设置为:

参数=结构体(numComponents,0.75,……kernelFunc,内核);

代码是

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

如图片所示,当组件的数量是21日的累计贡献率为75.2656%,这超过了给定水平(0.75)解释说。

案例2

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

参数=结构体(numComponents,24,……kernelFunc,内核);

代码是

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

如图片所示,当组件的数量是24,累计贡献率为80.2539%。

05。故障检测

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

clc清晰的所有关闭所有目录(genpath(松材线虫病))负载(\ \ TE.mat数据,trainData,testData)内核=内核(类型,高斯,γ,1/128年^2);参数=结构体(numComponents,0.65,……kernelFunc,内核);%建立一个KPCA对象kpca=KernelPCA(参数);%火车KPCA模型kpca火车(trainData);%测试KPCA模型结果=kpca测试(testData);%可视化kplot=KernelPCAVisualization();kplotcumContribution(kpca)kplottrainResults(kpca)kplot检测结果(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的一段时间,你应该设定开始时间等于结束时间。例如,“诊断”,(500、500)
  • 如果你想计算一段时间内的平均CPS,应分别设置开始时间和结束时间。“诊断”,(300、500)
  • 故障诊断模块只支持高斯核函数,它可能仍然需要很长时间,当训练数据的数量金宝app很大。
clc清晰的所有关闭所有目录(genpath(松材线虫病))负载(\ \ TE.mat数据,trainData,testData)内核=内核(类型,高斯,γ,1/128年^2);参数=结构体(numComponents,0.65,……kernelFunc,内核,……诊断,(300年,500年]);%建立一个KPCA对象kpca=KernelPCA(参数);%火车KPCA模型kpca火车(trainData);%测试KPCA模型结果=kpca测试(testData);%可视化kplot=KernelPCAVisualization();kplotcumContribution(kpca)kplottrainResults(kpca)kplot检测结果(kpca,结果)kplot诊断(结果)

诊断结果:

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

引用作为

磕碰秋(2023)。核主成分分析(KPCA)GitHub (https://github.com/iqiukp/KPCA-MATLAB)。检索

MATLAB版本兼容性
创建R2021b
与R2016b后来版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

版本使用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。添加支持数据金宝app重建

2。0

1。使用OOP重写一些模块。
2。添加了多个内金宝app核支持功能。
3所示。固定的一些bug。
4所示。加速故障诊断模块的运行速度。

1。2

1。修正一些错误
2。添加动态KPCA (DKPCA)

1.1.1

1。修正一些错误
2。添加故障诊断

1。1

1。修正一些错误
2。添加故障诊断

1.0.0

问题在这个视图或报告GitHub插件,参观GitHub库
问题在这个视图或报告GitHub插件,参观GitHub库