我正在使用IBK预测数值列。我有两个数据集:列车数据集和测试数据集。由于使用以下代码的预测值不满足我,我想对每列进行加权以使预测值更容易接受。
搜索之后,我发现Weka中唯一考虑属性权重的方案是天真的贝叶斯。我想知道是否可以使用朴素贝叶斯来衡量属性,然后在IBK中使用朴素贝叶斯(加权属性)的输出?
try{
IBk knn = new IBk();
String[] options = new String[2];
options[0]= "-F";
options[1]= "-E";
knn.setOptions(options);
knn.setKNN(100);
knn.setCrossValidate(false);
trainData.setClassIndex(trainData.numAttributes()-2);
testData.setClassIndex(testData.numAttributes()-2);
knn.buildClassifier(trainData);
Evaluation eval = new Evaluation(trainData);
eval.evaluateModel(knn, testData);
System.out.println(eval.toSummaryString("\nResults\n\n", false));
for(int i=0; i<= testData.numInstances()-1; i++)
{
double c = knn.classifyInstance(testData.instance(i));
System.out.println(c);
}
}
catch (Exception ex) {
ex.printStackTrace();
}