核主元分析(kpca)程序

  • f6_480591
    了解作者
  • matlab
    开发工具
  • 1.2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-22 10:27
    上传日期
在matlab上实现kpca的程序,没有任何问题,绝对可以运行
核主元分析(kpca)程序
  • kpcaFordata.m
    2.3KB
内容介绍
function [train_kpca,test_kpca] = kpcaFordata(train,test,threshold,rbf_var) %train 是训练数据 %test 是测试数据 %threshold 是阀值,是累计特征值的和占总的特征值的和的百分比,其范围是1—100。 %rbf_var 是径向基函数的参数 %% Data kpca processing %% 源地址:http://blog.sina.com.cn/lssvm %这个思路应该是这样的:根据训练数据得到中心核矩阵,计算出指定的特征向量(这是目的)。同样根据测试数据计算出测试数据的中心核矩阵,利用训练数据的特征向 %量计算出测试数据的kpca %% 函数默认设置 if nargin <4 rbf_var=10000;%? end if nargin <3 threshold = 90; end %% 数据处理 patterns=zscore(train); %训练数据标准化 test_patterns=zscore(test); %测试数据标准化 train_num=size(patterns,1); %train_num是训练样本的个数 test_num=size(test_patterns,1);%test_num是测试样本的个数 cov_size = train_num; %cov_size是训练样本的个数 %% 计算核矩阵,这是一个对称阵 for i=1:cov_size, for j=i:cov_size, K(i,j) = exp(-norm(patterns(i,:)-patterns(j,:))^2/rbf_var); %核函数 rbf_var ?? K(j,i) = K(i,j); end end unit = ones(cov_size, cov_size)/cov_size;%cov_size是样本的个数 %% 中心化核矩阵 K_n = K - unit*K - K*unit + unit*K*unit;% 中心化核矩阵 %% 特征值分解 [evectors_1,evaltures_1] = eig(K_n/cov_size); [x,index]=sort(real(diag(evaltures_1))); %sort每行按从小到大排序,x为排序后结果,index为索引 evals=flipud(x) ;% flipud函数实现矩阵的上下翻转 index=flipud(index); %% 将特征向量按特征值的大小顺序排序 evectors=evectors_1(:,index); %% 单位化特征向量 for i=1:cov_size evecs(:,i) = evectors(:,i)./(sqrt(evectors(:,i))); end train_eigval = 100*cumsum(evals)./sum(evals); index = find(train_eigval >threshold); train_kpca = zeros(train_num, index(1)); %train_num是训练样本的个数 %% evecs单位化后的特征矩阵,K_n训练数据的中心化核矩阵 train_kpca=[K_n * evectors(:,1:index(1))]; %% 重建测试数据 unit_test = ones(test_num,cov_size)/cov_size;%cov_size是训练样本的个数 K_test = zeros(test_num,cov_size); %test_num是测试样本的个数, cov_size是训练样本的个数 for i=1:test_num, %test_num是测试样本的个数 for j=1:cov_size,%cov_size是训练样本的个数 K_test(i,j) = exp(-norm(test_patterns(i,:)-patterns(j,:))^2/rbf_var); end end K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit; test_kpca = zeros(test_num, index(1));%test_num是测试样本的个数 test_kpca = [K_test_n * evectors(:,1:index(1))];
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...