Java를 사용 하시겠습니까? 훈련 자바 인터페이스를 사용하여 분류 기준을 평가하는 간단한 예는 여기에 주어진 아래에 발췌 : http://www.programcreek.com/2013/01/a-simple-machine-learning-example-in-java/
첫 번째 단계는 생성 된 분할 :
// Do 10-split cross validation
Instances[][] split = crossValidationSplit(data, 10);
// Separate split into training and testing arrays
Instances[] trainingSplits = split[0];
Instances[] testingSplits = split[1];
그리고 전형적인 교육/평가 하 :
// For each training-testing split pair, train and test the classifier
for (int i = 0; i < trainingSplits.length; i++) {
Evaluation validation = classify(models[j], trainingSplits[i], testingSplits[i]);
predictions.appendElements(validation.predictions());
}
이와 대조적으로 일부 이전 코드에서는 trainCV
/testCV
함수를 사용하여 이러한 인스턴스 집합을 가져 왔습니다. 알려진 폴드에 대한 데이터의 이러한 하위 집합을 반환하는 새 함수를 작성할 수 있습니다.
아마도 Instances.trainCV의 소스 코드는 인스턴스 세트를 구축하는 방법의 좋은 예입니다
http://grepcode.com/file/repo1.maven.org/maven2/nz.ac.waikato.cms.weka/weka-stable/3.6.7/weka/core/Instances.java
의 핵심 라인 copyInstances
호출합니다.
copyInstances(0, train, first);
copyInstances(first + numInstForFold, train,
numInstances() - first - numInstForFold);
return train;
아마도 단순히 new Instances(java.lang.String name, java.util.ArrayList<Attribute> attInfo, int capacity)
를 사용하여 모든 인스턴스의 상위에서 Instances.get
를 사용하여 채우기 빈 인스턴스를 생성 할 수있다.
또 다른 방법은 내가 (matlab에/자바) 같은 분할과 다중 분류를 훈련 때 다음 발췌 예처럼 필터를 사용하여 다음과 같습니다
filterRand = Randomize();
filterRange = RemoveRange();
%if the filterInst parameter is active, take a subsample of training
if doFilterTrain
rangeStr = sprintf('%g-%g', 1, learnParams.trainSizeMax);
filterRange.setInstancesIndices(rangeStr);
filterRange.setInvertSelection(1);
end
if doFilterTrain
filterRand.setInputFormat(instTrain);
filterRange.setInputFormat(instTrain);
instTrainSub = Filter.useFilter(instTrain, filterRand);
instTrainSub = Filter.useFilter(instTrainSub, filterRange);
end
행운을 빕니다!
사실 저는 파이썬을 사용하고 있습니다 (예, scikitlearn을 사용해야한다는 것을 알고 있습니다. 근본적으로 나의 질문은 당신의 자신의 trainCV 기능을 쓰는 것보다 폴드가있는 Weka에게 말하는 쉬운 길은 더 지쳤다. 거기에 하나가 없다면, 나는 열차/테스트 스플릿을 10 개 만들고 각 스플릿에서 Weka를 따로 따로 실행하기 위해 파이썬을 사용할 수 있습니다. – jjs
Weka에게 폴드가 있는지, 실행 중인지를 알려주려면 train/test 인스턴스를 지정해야합니다. 교육/평가. 당신의 관점에서 볼 때 이것은 관리가 더 필요합니다 (실제로는 고통이었습니다).하지만 제가 아는 유일한 방법입니다 (Weka를 잠시 사용하지 않았 음). – Graham