核主成分分析(KPCA)
为降维MATLAB代码,使用KPCA故障检测和故障诊断
版本2.2,14 - 5 - 2021
电子邮件:iqiukp@outlook.com
主要特点
- 本届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γ-γ%}内核=内核(”类型”,”高斯”,”γ”,价值);内核=内核(”类型”,”多项式”,”学位”,价值);内核=内核(”类型”,”线性”);内核=内核(”类型”,”乙状结肠”,”γ”,价值);内核=内核(”类型”,”拉普拉斯算子”,”γ”,价值);
例如,计算内核之间的矩阵X和Y
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=kpca。newData;%可视化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();kplot。cumContribution(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();kplot。cumContribution(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();kplot。cumContribution(kpca)kplot。trainResults(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();kplot。cumContribution(kpca)kplot。trainResults(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)。检索。
KernelPCA
版本使用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重写一些模块。 |
|
|
1。2 | 1。修正一些错误 |
|
|
1.1.1 | 1。修正一些错误 |
|
|
1。1 | 1。修正一些错误 |
|
|
1.0.0 |
|
问题在这个视图或报告GitHub插件,参观GitHub库。
问题在这个视图或报告GitHub插件,参观GitHub库。