我在weka中使用IBK得到了错误的结果

时间:2013-11-18 13:14:01

标签: weka knn

我有两个数据集,一个用于训练数据集,另一个用于测试数据集。 我想在训练数据集中找到第一个测试数据集实例的第一个最近邻居,我写了下面的代码:

data.setClassIndex(data.numAttributes() - 1);
data1.setClassIndex(data1.numAttributes() - 1);
IBk knn = new IBk();
String[] options = new String[2];
options[0]= "-E";
options[1]= "-I";
knn.setOptions(options);
knn.setKNN(1);
knn.setCrossValidate(true);
knn.buildClassifier(data);
int d = knn.getKNN();
Double c = knn.classifyInstance(data1.instance(0));
System.out.println(d);
System.out.println(c);

我不知道为什么会得到错误的结果。因为我正在寻找最近邻居的实例,也在训练集中,结果应该与测试实例的值相同,但事实并非如此! 我的训练数据集:

@relation MyRelation

@attribute Fname {Tina,Alex,Poul,Johan,Sarah}
@attribute Lname {Sansed,Erikson,Nadi,Raj,Maad}
@attribute Status {Single,Maried}
@attribute sex {Fmale,male}
@attribute 'worked years' numeric
@attribute age numeric
@attribute Adults numeric
@attribute tax numeric
@attribute salary numeric

@data
Tina,Sansed,Single,Fmale,14,35,5,362.79,1332.5
Alex,Erikson,Maried,male,14,40,6,0,1245.3
Poul,Nadi,Maried,male,6,35,6,207.32,1150.8
Johan,Raj,Maried,male,29,48,5,0,959
Sarah,Maad,Single,Fmale,16,42,2,0,667.1

现在在Test数据集中我想确定最近的邻居:  约翰,拉吉,Maried,雄性,29,48,5,0,959

运行代码的结果是:

1
1332.5

每次尝试时,它都会给我第一个训练集实例!

0 个答案:

没有答案