为什么准确率显示为0%?MATLAB LIBSVM

我使用以下方法提取了PCA特征:

function [mn,A1,A2,Eigenfaces] = pca(T,f1,nf1) m=mean(T,2),   %T是整个训练集train=size(T,2);A=[];for i=1:train    temp=double(T(:,i))-m;    A=[A temp];endtrain=size(f1,2);    %f1 - 来自训练集'T'的第一类人脸图像A=[];for i=1:train    temp=double(f1(:,i))-m;    A1=[A1 temp];endtrain=size(nf1,2);    %nf1 - 来自训练集'T'的非第一类人脸图像A=[];for i=1:train    temp=double(nf1(:,i))-m;    A2=[A2 temp];endL=A'*A;[V D]=eig(L);for i=1:size(V,2)    if(D(i,i)>1)       L_eig=[L_eig V(:,1)];    endend Eigenfaces=A*L_eig;end  

然后我仅投影了训练数据中的第一类人脸(类别+1),如下所示:

函数1

for i=1:15                       %训练集中第一类人脸图像的数量    temp=Eigenfaces'*A1(:,i);    proj_img1=[proj_img1 temp];end

然后我投影了训练数据中其余的人脸(类别-1),如下所示:

函数2

 for i=1:221              %训练集中非第一类人脸图像的数量      temp=Eigenfaces'*A2(:,i);      proj_img2=[proj_img2 temp]; end

函数3然后使用以下方法获得输入图像向量:

diff=double(inputimg)-mn;   %mn是训练数据的均值testfeaturevector=Eigenfaces'*diff;

我将函数1和函数2的结果分别标记为+1和-1,写入CSV文件中。然后我使用LIBSVM来计算准确率,当给出真实标签时,它返回了0%,当我尝试预测标签时,结果是-1而不是+1。

为什么准确率显示为0%?

基本上,我的模型没有正确训练,我无法发现错误所在。

任何建议都将不胜感激。


回答:

使用Eigenfaces作为训练集,创建一个label向量,包含1或-1(如果Eigenfaces的第i列对应于1,则label的第i个元素为1,否则为-1)。然后在svmtrain函数中使用Eigenfaceslabel

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注