如下,其中KNN_lsh extends Classifier
,并实现了buildClassifier函数和distributionForInstance函数。以下只是类中代码片段,用以说明如何利用weka.jar去做测试等
.read("C:\\Users\\Harry\\Desktop\\ceshi\\breast-cancer.arff");
train.setClassIndex(train.numAttributes()-1);
Instances test = DataSource.read("C:\\Users\\Harry\\Desktop\\ceshi\\breast-cancer-test.arff");
test.setClassIndex(test.numAttributes()-1);
if (!train.equalHeaders(test)) {
throw new Exception("测试集和训练集不同");
}
KNN_lsh classifier=new KNN_lsh();
classifier.buildClassifier(train);
for (int i = 0; i < test.numInstances(); i++) {
double pred = classifier.classifyInstance(test.instance(i));
double[] dist = classifier.distributionForInstance(test.instance(i));
System.out.print((i + 1) + " "
+ test.instance(i).toString(test.classIndex()) + " "
+ test.classAttribute().value((int) pred) + " ");
if (pred != test.instance(i).classValue()) {
System.out.print("wrong");
} else {
System.out.print("correct");
}
System.out.println(" " + Utils.arrayToString(dist));
// System.out.println(pred);
输出如下:
1 no-recurrence-events no-recurrence-events correct 0.8333333333333334,0.16666666666666666
2 no-recurrence-events no-recurrence-events correct 0.5,0.5
3 no-recurrence-events no-recurrence-events correct 0.5833333333333334,0.4166666666666667
4 no-recurrence-events recurrence-events wrong 0.4166666666666667,0.5833333333333334
5 no-recurrence-events no-recurrence-events correct 0.8333333333333334,0.16666666666666666
6 no-recurrence-events no-recurrence-events correct 0.6666666666666666,0.3333333333333333