人脸识别(LDA+KNN方法):
dataTrain=creatData(TrainDatabasePath);
dataTest=creatData(TestDatabasePath);
trainLabel=creatTrainLabelMat();
testLabel=creatTestLabelMat();
[train_lda,test_lda]=LDA(dataTrain,trainLabel,dataTest);: PCA降维 计算协方差矩阵
再求类内均值计算Sb、Sw(类间散布矩阵、类内散布矩阵)
用Sb Sw来计算 投影 进行多分类问题求解。
knnrecognition->knnsearch(计算距离,寻找最匹配的)->knnrecognition
LDA原理推荐博客地址:
首先建立训练集,creatTraindata和相应的标签creatTrainLabelMat通过trainlabel
1-50每10个都对应1个label,比如1-10都标记label=1,11-20都标记label=2等等。
data:50个训练集,即产生50列,每一列就是原来图像矩阵的92*112行*50列
以及为测试集初始化数据矩阵和标签矩阵。
进入LDA(线性判别分析):
计算共多少类别;nFea:特征nSmp:样本数
计算协方差矩阵提取特征,特征降到40维度。50个样本50行。
sample mean对每个样本求均值。
求类间、类内散布矩阵。Sb Sw均为40*40的矩阵。
提取(Sw\sb表示Sb/Sw)矩阵的前9个(k