




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、以下是LDA的m文件函数: 你稍稍改改就能用了!% % %function eigvector, eigvalue, elapse = LDA(gnd,options,data) % LDA: Linear Discriminant Analysiseigvector, eigvalue = LDA(gnd, options, data)Input:data - Data matrix. Each row vector of fea is a data point.gnd - Colunm vector of the label information for each data point.
2、options - Struct value in Matlab. The fields in options that can be set:Regu - 1: regularized solution, a* = argmax%0: solve the sinularity problem bySVD%Default: 0%ReguAlpha -The regularization parameter.Valid%when Regu=1. Default value is0.1.%ReguType-'Ridge': Tikhonovregularization%'C
3、ustom': User provided%regularizationmatrix%Default: 'Ridge'%regularizerR- (nFea x nFea) regularization%matrix which should beprovided%if ReguType is 'Custom'.nFea is%the feature number of data%matrix(a'X'WXa)/(a'X'Xa+ReguAlpha*I)%Fisherface1:%nClass% % % principal
4、 %PCA% % % % % %step%PCARatio principle %exceed the%components).PCARatioPCARatio = nSmp -Default: 0The percentage ofcomponent kept in thestep. The percentage is calculated based on the eigenvalue. Default is 1 (100%, all the non-zero eigenvalues will be kept.If PCARatio > 1, the PCAwill keep exac
5、tlycomponents (does notexact number of non-zero% %new% % % % % % % %Examples:Output:eigvector - Each column is an embedding function, for aeigvalue elapsedata point (row vector) x, y = x*eigvector will be the embedding result of x.-The sorted eigvalue of LDA eigen-problem.-Time spent on different st
6、epsfea = rand(50,70);gnd = ones(10,1);ones(15,1)*2;ones(10,1)*3;ones(15,1)*4;options = 口;options.Fisherface = 1;eigvector, eigvalue = LDA(gnd, options, fea);Y = fea*eigvector;% See also LPP, constructW, LGE%Reference:% P. N. Belhumeur, J. P. Hespanha, and D. J. Kriegman, 掏 igenfaces% vs. fisherfaces
7、: recognition using class specific linear% projection, ? IEEE Transactions on Pattern Analysis and Machine% Intelligence, vol. 19, no. 7, pp. 711-720, July 1997. % Deng Cai, Xiaofei He, Yuxiao Hu, Jiawei Han, and Thomas Huang,% "Learning a Spatially Smooth Subspace for Face Recognition", C
8、VPR'2007% Deng Cai, Xiaofei He, Jiawei Han, "SRDA: An Efficient Algorithm for% Large Scale Discriminant Analysis", IEEE Transactions on Knowledge and% Data Engineering, 2007.%version 2.1 -June/2007%version 2.0 -May/2007%version 1.1 -Feb/2006%version 1.0 -April/2004% Written by Deng Cai
9、 (dengcai2 AT ) %if -exist('data',var,) global data;endif (-exist('options',var,) options =;endif isfield(options,'Regu') | options.RegubPCA = 1;if isfield(options,'PCARatio') options.PCARatio = 1;endelsebPCA = 0;if isfield(options,'ReguType') optio
10、ns.ReguType = 'Ridge'endif isfield(options,'ReguAlpha')options.ReguAlpha = 0.1;end endtmp_T = cputime;% = InitializationnSmp,nFea = size(data);if length(gnd) = nSmperror('gnd and data mismatch!');endclassLabel = unique(gnd);nClass = length(classLabel);Dim = nClass - 1;if bPCA
11、 & isfield(options,'Fisherface') & options.Fisherface options.PCARatio = nSmp - nClass;endif issparse(data)data = full(data);endsampleMean = mean(data,1);data = (data - repmat(sampleMean,nSmp,1);bChol = 0;if bPCA & (nSmp > nFea+1) & (options.PCARatio >= 1)DPrime = data&
12、#39;*data;DPrime = max(DPrime,DPrime');R,p = chol(DPrime);if p = 0bPCA = 0;bChol = 1;end end%=% SVD%=if bPCAif nSmp > nFeaddata = data'*data;ddata = max(ddata,ddata');eigvector_PCA, eigvalue_PCA = eig(ddata);eigvalue_PCA = diag(eigvalue_PCA);clear ddata;maxEigValue = max(abs(eigvalue_
13、PCA);eigIdx = find(eigvalue_PCA/maxEigValue < 1e-12);eigvalue_PCA(eigIdx)=;eigvector_PCA(:,eigIdx)=;junk, index = sort(-eigvalue_PCA);eigvalue_PCA = eigvalue_PCA(index);eigvector_PCA = eigvector_PCA(:, index);%=if options.PCARatio > 1idx = options.PCARatio;if idx < length(eigvalue_PCA)eigva
14、lue_PCA = eigvalue_PCA(1:idx);eigvector_PCA = eigvector_PCA(:,1:idx);endelseif options.PCARatio < 1sumEig = sum(eigvalue_PCA);sumEig = sumEig*options.PCARatio;sumNow = 0;for idx = 1:length(eigvalue_PCA)sumNow = sumNow + eigvalue_PCA(idx);if sumNow >= sumEigbreak;endendeigvalue_PCA = eigvalue_P
15、CA(1:idx);eigvector_PCA = eigvector_PCA(:,1:idx);end%=eigvalue_PCA = eigvalue_PCA.A-.5;data = (data*eigvector_PCA).*repmat(eigvalue_PCA',nSmp,1); elseddata = data*data'ddata = max(ddata,ddata');eigvector, eigvalue_PCA = eig(ddata);eigvalue_PCA = diag(eigvalue_PCA);clear ddata;maxEigValue
16、 = max(eigvalue_PCA);eigIdx = find(eigvalue_PCA/maxEigValue < 1e-12);eigvalue_PCA(eigIdx)=;eigvector(:,eigIdx)=;junk, index = sort(-eigvalue_PCA);eigvalue_PCA = eigvalue_PCA(index);eigvector = eigvector(:, index);%=if options.PCARatio > 1idx = options.PCARatio;if idx < length(eigvalue_PCA)e
17、igvalue_PCA = eigvalue_PCA(1:idx);eigvector = eigvector(:,1:idx);endelseif options.PCARatio < 1sumEig = sum(eigvalue_PCA);sumEig = sumEig*options.PCARatio;sumNow = 0;for idx = 1:length(eigvalue_PCA)sumNow = sumNow + eigvalue_PCA(idx);if sumNow >= sumEigbreak;endendeigvalue_PCA = eigvalue_PCA(1
18、:idx);eigvector = eigvector(:,1:idx);end%=eigvalue_PCA = eigvalue_PCA.A-.5;eigvector_PCA = (data'*eigvector).*repmat(eigvalue_PCA',nFea,1);data = eigvector; clear eigvector;end elseif -bCholDPrime = data'*data;%options.ReguAlpha = nSmp*options.ReguAlpha;switch lower(options.ReguType) cas
19、e lower('Ridge')for i=1:size(DPrime,1)DPrime(i,i) = DPrime(i,i) + options.ReguAlpha; endcase lower('Tensor')DPrime = DPrime + options.ReguAlpha*options.regularizerR; case lower('Custom')DPrime = DPrime + options.ReguAlpha*options.regularizerR; otherwiseerror('ReguType doe
20、s not exist!'); endDPrime = max(DPrime,DPrime');end endnSmp,nFea = size(data);Hb = zeros(nClass,nFea);for i = 1:nClass,index = find(gnd=classLabel(i);classMean = mean(data(index,:),1);Hb (i,:) = sqrt(length(index)*classMean;endelapse.timeW = 0;elapse.timePCA = cputime - tmp_T;tmp_T = cputime
21、;if bPCAdumpVec,eigvalue,eigvector = svd(Hb,'econ');eigvalue = diag(eigvalue);eigIdx = find(eigvalue < 1e-3);eigvalue(eigldx)=;eigvector(:,eigldx)=;eigvalue = eigvalue.A2;eigvector =eigvector_PCA*(repmat(eigvalue_PCA,1,length(eigvalue).*eigvector); elseWPrime = Hb'*Hb;WPrime = max(WPr
22、ime,WPrime');dimMatrix = size(WPrime,2);if Dim > dimMatrixDim = dimMatrix;endif isfield(options,'bEigs')if options.bEigsbEigs = 1;elsebEigs = 0;endelseif (dimMatrix > 1000 & Dim < dimMatrix/10) | (dimMatrix > 500 & Dim< dimMatrix/20) | (dimMatrix > 250 & Dim < dimMat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-ZSA 232-2024 特种巡逻机器人通.用技术要求
- T-ZJHQ 0003-2024 高等学校生活垃圾分类工作规范
- 2025年度电子商务平台数据分析与报告合同模板
- 二零二五年度解除婚约合同范本:婚约解除后的财产清算、债务处理及子女监护协议
- 2025年度钢板租赁与回收利用合同
- 二零二五年度金融机构资金转入风险管理合同
- 2025年度智慧能源管理系统担保人履约保证合同
- 二零二五年度企业绿色金融项目补贴协议
- 二零二五年度情人协议书:浪漫爱情生活规划合同范本
- 石壕吏:历史背景与社会问题分析教学教案
- 第三章生产勘探课件
- 2023年安徽高校教师岗前培训结业统考试题及参考答案
- 听胎心音操作评分标准
- 风机齿轮箱的机构和工作原理
- 高效能人士的七个习惯 周计划表 完美版
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 园林绿化工作总结及工作计划7篇2023年
- 浙江森林抚育工程预算定额编制说明
- 金庸群侠传x最完整攻略(实用排版)
- 污水处理厂设备的维修与保养方案
- 专题13《竹里馆》课件(共28张ppt)
评论
0/150
提交评论