2014-04-20 10 views
0

LibSVM (3.18)을 사용하고 있습니다. 그러나 결과를 예측할 때마다 항상 0이됩니다.Libsvm - 예상 결과가 NULL입니다.

나는이 지침에 따라 오전 :

  • 내가 csv 파일 (+ 20K 라인)가, 열 (대상) 데이터의 대부분은 제로이고, 다른 값은 0 ~ 10 사이입니다.
  • 이 열을 레이블로 선택하여 CSV 파일을 libsvm 데이터로 변환합니다. 내가 데이터를 확장 할 때 나는 큰 파일을 가지고
  • 가 나는 부분 집합을 사용하여 이러한 매개 변수 -l 0 -u 1 data.cv

    $의 SVM-규모> scaled.data

  • 를 사용합니다. py.

  • 나는 모든 단계를 끝내고 예측을 적용 할 때. 나는 정확성의 좋은 결과를 얻었다. $의 SVM은 예측하기 scaled_data.csv model.train data.predicted

정확도 = 94.28 %하지만 난 얻을 파일 (data.predicted가) 0 만 포함

.

이런 종류의 데이터를 예측하는 것은 까다로운 일입니까? 이 문제를 해결할 방법이 있습니까?

+0

사용한 코드는 게시 할 수 있습니까? 그리고 아마도 입력의 처음 몇 라인? – logc

+0

예, 이것은 까다로운 문제입니다. 이를 해결하는 일반적인 방법은 소수 클래스를 과다하게 샘플링하여 대부분의 샘플만큼 많은 샘플을 확보하는 것입니다. 원시 LibSVM을 직접 사용하지는 않았지만,'-wi' 옵션이 이것을 처리 할 수있는 것처럼 보입니다. –

+0

하지만 체중 플래그를 사용할 때; 존재하지 않는 긍정적 인 결과로 데이터 세트에 다시 영향을 미치므로 정확도가 얼마나됩니까? 문제를 해결할 다른 방법이 있습니까? – user3378649

답변

0

먼저 데이터를 확인하십시오. 분리 할 수있는 클래스와 분리 할 수없는 클래스가 있습니까? 또는 완전히 알려지지 않았습니까? NN 분류자를 사용하여 클래스가 클러스터되었는지 여부를 확인할 수 있습니다. 둘째, 대부분의 0이 아닌 샘플을 놓치고 전체 세트를 사용할 수 있으므로 subset.py를 사용하지 마십시오. 여전히 수동으로 실패하는 경우 "0"클래스 샘플 수가 0이 아닌 다른 클래스 범위에있는 하위 세트를 수행하여 프로세스를 확인하십시오 (선적 된 도구 또는 자체 코드를 사용하고 있습니까?). 이것이 효과가 있다면 전체 세트로 다시 시작하여 체중 옵션을 사용할 수 있습니다. 무게가 일을하고 있다면 귀하의 분류 기준이 귀하의 요구 사항에 전혀 도움이되는지 조심스럽게 Confusion matrix을 평가해야합니다.

관련 문제