gpt4 book ai didi

java - 在 weka 分类器中缩放训练数据

转载 作者:行者123 更新时间:2023-11-29 03:30:36 24 4
gpt4 key购买 nike

我在训练集上使用 weka 分类器 a,但我想在构建模型之前对其进行缩放。问题是我不知道该怎么做。这是构建分类器并执行预测的代码。 “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);

关于java - 在 weka 分类器中缩放训练数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com