图像缩略图

核主成分分析(KPCA)

版本2.2(1.97 MB)由 邱克鹏
使用KPCA进行降维、故障检测和故障诊断的MATLAB代码。

1.7K下载

更新2021年5月24日

来自GitHub

在GitHub上查看许可证

核主成分分析(KPCA)

使用KPCA进行降维、故障检测和故障诊断的MATLAB代码

版本2.2,2021年5月14日

电邮:iqiukp@outlook.com

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


主要特征

  • 用于培训和测试KPCA模型的易用API
  • 万博1manbetx支持降维、数据重建、故障检测和故障诊断
  • 多种核函数(线性、高斯、多项式、S形、拉普拉斯)
  • 培训和测试结果的可视化
  • 根据给定的解释级别或给定的编号确定部件编号

通知

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

如何使用

01.核函数

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

%{类型-线性:k (x, y) = x ' * y多项式: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γ-γ%}内核=内核(“类型”、“高斯”、“伽马”,值);kernel = kernel ('type', '多项式','degree', value);kernel = kernel ('type', 'linear');kernel = kernel ('type', 'sigmoid', 'gamma', value);kernel = kernel ('type', 'laplacian', 'gamma', value);

例如,计算XY

X=兰特(5,2);Y=兰特(3,2);内核=内核('type','gaussian','gamma',2);kernelMatrix=kernel.computeMatrix(X,Y);>>kernelMatrix kernelMatrix=0.5684 0.5607 0.4007 0.4651 0.8383 0.5091 0.8392 0.7116 0.9834 0.4731 0.8816 0.8052 0.5034 0.9807 0.7274

02.用于降维的简单KPCA模型

CLC clear all close all addpath(genpath(pwd)) load('.\data\helix。mat', 'data') kernel = kernel ('type', '高斯','gamma', 2);struct('numComponents', 2,…kernelFunc,内核);%构建一个KPCA对象% train KPCA模型KPCA .train(数据);% mapping数据mapingdata = kpca.score;% Visualization kplot = KernelPCAVisualization();可视化映射数据kplot.score(kpca)

训练结果(降维):

***KPCA模型培训完成***运行时间=0.2798秒核函数=高斯样本数=1000个特征数=3个组件数=2个T2报警数=135个SPE报警数=0个T2准确度=86.5000%SPE准确度=100.0000%

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

03.简单的KPCA模型用于重建

CLC clear all close all addpath(genpath(pwd)) load('.\data\circle. txt . txt . txt . txt . txt . txt . txt . txt。mat', 'data') kernel = kernel ('type', '高斯','gamma', 0.2);struct('numComponents', 2,…kernelFunc,内核);%构建一个KPCA对象% train KPCA模型KPCA .train(数据);%重构数据reconstructedData = kpca.newData;% Visualization kplot = KernelPCAVisualization();kplot.reconstruction (kpca)

4成分数测定

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

案例1

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

struct('numComponents', 0.75,…kernelFunc,内核);

代码是

clc clear all close all addpath(genpath(pwd))load('.\data\TE.mat',trainData')kernel=kernel('type','gaussian','gamma',1/128^2);parameter=struct('numComponents',0.75,'kernelFunc',kernel kernel);%构建KPCA对象KPCA=KernelPCA(parameter);%训练KPCA模型KPCA.train(trainData);%可视化kplot=kernelPCavisization();kplot.CUMCA(kpca)

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

案例2

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

参数=struct('numComponents',24,…'kernelFunc',kernel);

代码是

clc clear all close all addpath(genpath(pwd))加载('.\data\TE.mat','trainData')内核=内核('type','gaussian','gammar',1/128^2);参数=struct('numComponents',24,'kernelFunc',kernel);%生成KPCA对象KPCA=KernelPCA(参数);%列车KPCA模型KPCA列车(列车数据);%可视化kplot=KernelPCAVisualization();kplot.CUMCA(kpca)

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

5故障检测

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

clc clear all close all addpath(genpath(pwd)) load('.\data\TE。kernel = kernel ('type', '高斯','gamma', 1/128^2);struct('numComponents', 0.65,…kernelFunc,内核);%构建一个KPCA对象% training KPCA模型KPCA .train(trainData);% test KPCA模型结果= KPCA .test(testData);% Visualization kplot = KernelPCAVisualization();kplot.cumContribution (kpca) kplot.trainResults kplot (kpca)。检测结果(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,应将开始时间设置为结束时间。例如,“诊断”[500500]
  • 如果要计算一段时间的平均CPS,则应分别设置开始时间和结束时间。”诊断',[300500]
  • 故障诊断模块仅支持高斯核函数,当训练数据较多时,可能需要较长的时间。万博1manbetx
clc clear all close all addpath(genpath(pwd)) load('.\data\TE。kernel = kernel ('type', '高斯','gamma', 1/128^2);struct('numComponents', 0.65,…kernelFunc,内核,…“诊断”,300年、500年);%构建一个KPCA对象% training KPCA模型KPCA .train(trainData);% test KPCA模型结果= KPCA .test(testData);% Visualization kplot = KernelPCAVisualization();kplot.cumContribution (kpca) kplot.trainResults kplot (kpca)。检测结果(kpca、结果)kplot.diagnosis(结果)

诊断结果:

***故障诊断***故障诊断启动…完成故障诊断。运行时间= 18.2738秒起点= 300终点= 500故障变量(T2) = 44 1 4故障变量(SPE) = 1 44 18

MATLAB版本兼容性
使用R2021a创建
与R2016b及更高版本兼容
平台兼容性
窗户 马科斯 Linux

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!
要查看或报告此GitHub加载项中的问题,请访问GitHub库
要查看或报告此GitHub加载项中的问题,请访问GitHub库