我正在尝试使用 Java Weka API 构建分类模型。我的训练数据集存在类别不平衡问题。出于这个原因,我想使用像 SMOTE 这样的类不平衡技术来减少类不平衡问题。
源代码如下:
package classification;
import java.util.Random;
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayesMultinomial;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.StringToWordVector;
public class questStackoverflow {
public static void main(String agrs[]) throws Exception{
String fileRootPath = "../file.arff"; //Dataset
Instances strdata = DataSource.read(fileRootPath); //Load Dataset
StringToWordVector filter = new StringToWordVector(10000);
filter.setInputFormat(strdata);
String[] options = { "-W", "10000", "-L", "-M", "1",
"-stemmer", "weka.core.stemmers.IteratedLovinsStemmer",
"-stopwords-handler", "weka.core.stopwords.Rainbow",
"-tokenizer", "weka.core.tokenizers.AlphabeticTokenizer"
};
filter.setOptions(options);
filter.setIDFTransform(true);
Instances data = Filter.useFilter(strdata,filter); //Apply filter
data.setClassIndex(0); //set class index
double recall=0.0;
double precision=0.0;
double fmeasure=0.0;
double tp, fp, fn, tn;
Classifier classifier = null;
classifier = new NaiveBayesMultinomial(); //classifer
}
}
}
我的代码在没有类不平衡技术的情况下运行良好。但是,我需要使用类不平衡技术来缓解类不平衡问题。但是,我不知道如何在 Java Weka API 中使用它。
幕布斯7119047
相关分类