2012-04-20 6 views
0

나는 WEKA API를 사용하는 방법을 이해한다. 을 생성하는 프로그램에 먼저 arff을로드한다. 그런 다음이 데이터 집합에 대해 훈련 된 Classifier에이 값이 제공됩니다. 이제는 레이블이없는 새로운 테스트 데이터 세트를 제공하고 WEKA API가 해당 인스턴스에 대한 레이블이 무엇인지 알려줄 것입니다. 어떻게 된거 야?WEKA에서 결과를 얻는 방법

답변

2
+0

메서드가 반환하는이 이중 값은 무엇입니까? 그것은 예측 된 학급의 색인입니까? – prometheuspk

+0

@ Prometheus87 Classifier.classifyInstance (Instance)는 Instance.classValue (클래스의 내부 표현)에 해당하는 double을 반환합니다. 다음은 좋은 가이드입니다. http://weka.wikispaces.com/Use+WEKA+in+your+Java+code – daveb

0

훈련 및 테스트 인스턴스가 정확히 같은 보일 것 Classifier.classifyInstance (인스턴스)를 사용합니다.

특징 량 1, 특징 량 2 ......., 특징 량 n 개의 클래스 값 특징 량 1, 특징 량 2 ......., 특징 량 n 개의 클래스 값

테스트 세트에 모델을 적용 할 때 Weka는 모델에 인스턴스의 클래스 값을 제공하지 않습니다. 오히려 그것은 "이봐, 분류 자, 훈련 세트에서 배운대로 각 테스트 인스턴스에 클래스를 할당하는 방법을 보도록하겠습니다."라고 묻습니다. 그런 다음 분류 모델은 각 테스트 인스턴스에 학습 집합에서 배운 내용으로부터 클래스를 할당합니다. Weka는이를 비교하여 정밀도, 리콜, f- 점수, ROC, AUC, 오류 등의 측면에서 결과를 제공합니다. 따라서 요약하면 테스트 인스턴스에 클래스 값이 있습니다. 제외하지 마십시오. 그렇지 않으면 "교육 및 테스트 세트가 호환되지 않습니다."와 같은 오류가 발생합니다.

+0

안녕하세요. 나는 분류자를 훈련 시켰지만 지금은 '인스턴스'를 통과하는 것이 문제입니다. 하나의 인스턴스에는 100 개의 숫자 기능이 있고 레이블이나 클래스에는 하나의 문자열 문자가 있습니다. 내 인스턴스를 초기화 할 수 없습니다. 생성자가'Instance (double weight, double [] attrValues)'인 것을 볼 수 있으며, 이제는 classify 인스턴스에서'weka.core.UnassignedDatasetException'이 던져지고 인스턴스는 데이터 셋에 접근 할 수 없다고합니다. attrValues ​​[]에 101 번째 attr 즉 문자열 문자를 추가 할 수 없습니다. 유형이'double'이므로 여기에 무엇을 잘못하고 있습니까? – prometheuspk

+0

문제는 내가 새로운'Instance'에 어떤 데이터도 할당하지 않고 있다는 것이 었습니다. 이 작업은'Instance.setData()'에 의해 수행 되어야만합니다. 그러면 Classifier가 훈련 된 Instances 객체를 전달할 것입니다 – prometheuspk

관련 문제