우리는 Java 프로그램 내부에서 WEKA 분류자를 구현하려고합니다. 지금까지는 모든 것이 잘 작동하지만 Weka GUI의 트레이닝 세트에서 분류자를 만들 때 분류 정확도를 높이기 위해 StringToWordVector IDF 변환을 사용했습니다.WEKA - Java의 새 데이터 분류 - IDF 변환
새 인스턴스의 Java 내에서 어떻게 인스턴스를 분류 자에 전달하기 전에 새 인스턴스의 각 토큰 값을 설정하기 위해 IDF 변환을 계산합니까?
기본 코드는 다음과 같습니다
Instances ins = vectorize(msg);
Instances unlabeled = new Instances(train,1);
Instance inst = new Instance(unlabeled.numAttributes());
String tmp = "";
for(int i=0; i < ins.numAttributes(); i++) {
tmp = ins.attribute(i).name();
if(unlabeled.attribute(tmp)!=null)
inst.setValue(unlabeled.attribute(tmp), 1.0); //TODO: Need to figure out the IDF transformed value to put here NOT 1!!
}
unlabeled.add(inst);
unlabeled.setClassIndex(classIdx);
.....cl.distributionForInstance(unlabeled.instance(i));
그래서 내가 분류 할 새 인스턴스에 올바른 값을 넣을 수 있도록 내가이 코딩 가야합니까 어떻게?
그냥
어떤 도움도 대단히 감사하겠습니다 ... IDF의 변형 수 1.0
변경 될 필요가 inst.setValue(unlabeled.attribute(tmp), 1.0);
라인을 취소 할 수 있습니다!
입력 해 주셔서 감사합니다. 나는 이것이 내가 무엇인지 생각하지 않는다. 우리는로드하기를 원하는 사전 분류기를 가지고 있습니다.이 작업을 시도하고 FilteredClassifer의 set 메소드를 사용했지만 출력 형식이 설정되지 않았다는 불만이 있습니다. 나는 그것이 입력으로 훈련 데이터를 원하는 것 같아요 ... 그러나 StringToWordVector 함께 이것을 할 인터페이스가없는 것 같습니다 – NightWolf
편집을 참조하십시오. 대신 배치 모드에서 필터를 적용하는 각 인스턴스에 필터를 적용 .. – iinception