在Weka分类器中缩放训练数据

我在使用Weka分类器进行训练集的分类,但我想在构建模型之前对数据进行缩放。问题是我不知道如何操作。以下是构建分类器和进行预测的代码。”trainPath” 和 “predictPath” 中的文件是arff格式的。

void classify(String trainPath, String predictPath) {    try {        DataSource trainData = new DataSource(trainPath);        Instances train = trainData.getDataSet();        if(train.classIndex() == -1)            train.setClassIndex(train.numAttributes() -1);        DataSource predictData = new DataSource(predictPath);        Instances predict = predictData.getDataSet();        if(predict.classIndex() == -1)            predict.setClassIndex(predict.numAttributes() -1);        Classifier cls = new LibSVM();        cls.buildClassifier(train);        Instances labeled = new Instances(predict);        for (int c=0; c<predict.numInstances(); c++) {            double clsLabel = cls.classifyInstance(predict.instance(c));            labeled.instance(c).setClassValue(clsLabel);        }        BufferedWriter bw = new BufferedWriter(new FileWriter("files/labeled.arff"));        bw.write(labeled.toString());        bw.newLine();        bw.flush();        bw.close();    } catch (Exception e) {e.printStackTrace();}}

我知道在Libsvm中有svm-scale函数,但我不知道如何使用它。


回答:

Weka为您提供了数据预处理的方法,特别是

  • weka.filters.unsupervised.attribute.Normalize
  • weka.filters.unsupervised.attribute.Standardize

标准化器的使用示例,它将数据缩放到[0,1]区间(默认情况下):

Normalize norm = new Normalize();norm.setInputFormat(train);Instances processed_train = Filter.useFilter(train, norm);

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注