为什么准确率显示为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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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