2014-10-07 4 views
-2

나는 사용자 인증을위한 데이터 세트를 만들고 있으며, 나의 기차 데이터를 사기꾼과 유효한 사용자로 나누고 싶다. 31 개의 기능과 51 명의 사용자가 있습니다.matlab에 svm 정확도 코드

저는 열차 200 샘플과 테스트 200 샘플 있습니다. 이건 내 코드입니다 :

ttrain=[train;train2]  
group=[repmat(1,100,1);repmat(2,100,1)]  
model=svmtrain(ttrain,group,'kernel_function','rbf')  
testoutput=svmclassify(model,test,'Showplot','false') 

하지만 아래의 코드와 정확성을 계산할 때 오류 보여줍니다 "Undefined function 'eq' for input arguments of type 'struct'."

acc = sum(model == testoutput) ./ numel(testoutput)  

어떻게해야합니까를?

+0

조금 더 명확히 할 수 있습니까? 기차 데이터에는 31 개의 기능과 51 명의 사용자가 있다고 말하면됩니다. 제게는 훈련 세트에 51 가지 예가 있다고 들었습니다. 아래에는 200 개의 예제로 구성된 교육 데이터가 나와 있습니다. "51 명의 사용자"는 무엇을 의미합니까? – user1809923

답변

0

모델은 SVMStruct이므로 "=="를 사용하여 비교할 수 없습니다. SVM이 얼마나 많은 예를 정확하게 예측했는지 계산하고 그 수를 테스트 된 예제의 총 수로 나눕니다. 당신 테스트를위한 SVM

  • correctLabels이 예에 대한 올바른 레이블은 다음과 같습니다 :

    ACC = 합

    나는 다음과 같은 전제 조건으로 이런 일을 할 수 있다고 가정 할 (correctLabels == 테스트 출력)/numel (correctLabels)