我有一个数据集,它包含很多类0的实例和一些非常少的类1的实例,这是一个问题,因为类0的实例将支配类1的实例,并且类的精度非常低1.我正在使用weka java API,在API中我找到了为实例赋予权重的选项,所以我决定在我的测试集中对类1的实例进行权衡,如下所示:
breader = new BufferedReader(new FileReader("weka/train.txt"));
Instances train = new Instances(breader);
train.setClassIndex(train.numAttributes() - 1);
Instances testset= new Instances(new BufferedReader(new FileReader("weka/test.txt")));
unlabeled.setClassIndex(testset.numAttributes() - 1);
for (int i = 0; i < testset.numInstances(); i++) {
if(testset.instance(i).classValue()==1){
testset.instance(i).setWeight(30);
}
}
这样做后,精度提高了很多。现在我想知道我在做什么是可以接受的,如果是的话怎么可以推理呢?