【问题标题】:Add Question Mark to ARFF Using Java code使用 Java 代码向 ARFF 添加问号
【发布时间】:2016-03-17 13:39:05
【问题描述】:

我有一个代码可以为 Weka 准备一个 ARFF 文件。它将用于使用 j48 算法中已构建的模型对数据进行分类。

在 ARFF 文件中,我需要在最后一列加上问号,以便 Weka 尝试对数据进行分类。我有这个代码:

        ArrayList<Attribute> atts = new ArrayList<Attribute>();
        ArrayList<String> classVal = new ArrayList<String>();
        classVal.add("C1");
        classVal.add("C2");
        atts.add(new Attribute("a"));
        atts.add(new Attribute("b"));
        atts.add(new Attribute("c"));
        atts.add(new Attribute("d"));
        atts.add(new Attribute("@@class@@", classVal));
        Instances dataRaw = new Instances("TestInstances", atts, 0);
        dataRaw.setClassIndex(dataRaw.numAttributes() - 1);
        double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds()};
        dataRaw.add(new DenseInstance(1.0, instanceValue1));
        ArffSaver saver = new ArffSaver();
        saver.setInstances(dataRaw);
        saver.setFile(new File(path3));
        saver.setDestination(new File(path3));
        saver.writeBatch();

所以,作为最后一个元素,应该有一个?,它不是一个双精度值。如何添加?

double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds(), ?};

【问题讨论】:

    标签: java weka arff


    【解决方案1】:
    DenseInstance di = new DenseInstance(3);  // Sets all 3 values to missing
    di.setValue(0, p.getIncludedLength());
    di.setValue(1, p.getTimestampSeconds());
    

    或者,如果您的数组中确实有大量值,您可以使用零值作为占位符并尝试 setMissing()

    double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds(), 0.0}
    DenseInstance di = new DenseInstance(1.0, instanceValue1);
    di.setMissing(2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 2021-03-21
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多