核主元分析 KPCA及matlab代码,主要用于数据降维。

clc
clear all
close all
%% 载入数据
% 注意 数据样本为行 样本属性或者样本参数列!!!!!!!!!!!!!!!!!!!!!
% 特征参数维度与样本属性维度一致。
tztqxk = xlsread('KPCA1.xlsx');
[n,p] = size(tztqxk); % n行数 p列数
data = tztqxk';       % 样本是行属性是列就要转置
%% 2、数据标准化处理
X0 = zscore(data);  % 单位不统一
%% 3、求核矩阵
% 径向基核函数
c = 2.5;  % 径向基参数
% 径向基参数可自己定义。参数的合理选择直接影响结果
% 可以用遗传算法、粒子群算法算法去寻优
for i = 1:p
    for j = 1:p
        K(i,j) = exp(-(norm(X0(i,:) - X0(j,:)))^2/(2*c^2));
        K(j,i) = K(i,j);
    end
end
%% 4、中心化矩阵
unit = (1/p) * ones(p, p);
Kp = K - unit*K - K*unit + unit*K*unit;

%% 5、特征值分解
% 特征向量proper_vector、特征值proper_value
[proper_vector, proper_value] = eig(Kp);
% diag函数提取矩阵主对角元素
proper_value_vec = diag(proper_value);
proper_value_vec = abs(proper_value_vec);
% 特征值按降序排列
[proper_value_sort, index] = sort(proper_value_vec, 'descend');

%% 6、贡献率计算
contribution_rate =  proper_value_sort*100/ sum(proper_value_sort);  % 计算贡献率
cum_contribution_rate = (cumsum(proper_value_sort)/ sum(proper_value_sort))*100; %贡献率之和

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法及其模型预测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值