图片缩略图

核主成分分析(KPCA)

version 2.2 (1.97 MB) by 磕碰邱
使用KPCA进行降维、故障检测和故障诊断的MATLAB代码。

1.8 k下载

更新2021年5月24日

从GitHub

在GitHub上查看许可证

核主成分分析(KPCA)

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

版本2.2,14 - 5 - 2021

电子邮件:iqiukp@outlook.com

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


主要特点

  • 简单易用的API用于KPCA模型的培训和测试
  • 金宝app支持降维、数据重构、故障检测和故障诊断
  • 多种核函数(线性、高斯、多项式、s型、拉普拉斯)
  • 培训和测试结果的可视化
  • 根据给定的解释水平或给定的数字确定组件数量

通知

  • 仅支持高斯核的故障诊断。金宝app
  • 此代码仅供参考。

如何使用

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 = rand(5, 2);Y = rand(3,2);kernel = kernel ('type', '高斯','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)

04.组件数量确定

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

案例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', '高斯','gamma', 1/128^2);struct('numComponents', 0.75,…kernelFunc,内核);%构建一个KPCA对象% training KPCA模型KPCA .train(trainData);% Visualization kplot = KernelPCAVisualization();kplot.cumContribution (kpca)

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

案例2

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

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

代码是

clc clear all close all addpath(genpath(pwd)) load('.\data\TE。mat', 'trainData') kernel = kernel ('type', '高斯','gamma', 1/128^2);struct('numComponents', 24,…kernelFunc,内核);%构建一个KPCA对象% training KPCA模型KPCA .train(trainData);% Visualization kplot = KernelPCAVisualization();kplot.cumContribution (kpca)

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

05.故障检测

使用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,需要将开始时间设置为结束时间。例如,'diagnosis', [500,500]
  • 如果要计算某一时间段的平均CPS,需要分别设置开始时间和结束时间。“诊断”,(300、500)
  • 该故障诊断模块仅支持高斯核函数,当训练数据量较大时,故障诊断需要较长时金宝app间。
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及后续版本
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!
要查看或报告这个GitHub插件中的问题,请访问GitHub库
要查看或报告这个GitHub插件中的问题,请访问GitHub库