繁体   English   中英

Weka - 组合具有不同标头的arff文件

[英]Weka - combining arff files that have different headers

我想合并2个arff文件。 它们具有相同的属性,但属性下的值会发生变化。

例如:

1.arff: weather(sunny, rainy). 50 instances
2.arff: weather(warm, cold, freezing). 30 instances

我想创建一个新的arff:

3.arff: weather(sunny,rainy,warm,cold,freezing). 80 instances

我在示例CLI(weka)中尝试过:

java weka.core.Instances 1.arff 2.arff > 3.arff
java weka.core.Instances append 1.arff 2.arff > 3.arff
java weka.core.Instances merge 1.arff 2.arff > 3.arff

他们都没有工作。

如果有任何帮助,我将不胜感激。

非常感谢你。

您是否尝试过使用MergeSets类来合并文件。 您可以从这里尝试: http//bioweka.sourceforge.net/docs/api/bioweka/filters/universal/MergeSets.html

您还可以编写一个小代码来合并两个arff文件:

import weka.core.converters.ArffLoader
import java.io.{File,FileWriter}

def combineAllArffs() {
  var arffLoader = new ArffLoader
  val arffDir: File = new File(s"Arff/")

  val arffList = arffDir.listFiles;
  var instances: Instances = null
  var structure: Instances = null

  if (arffList == null) {
    print(s"Warning: Arff list for '$mode' is empty.")
    return
  }

  for (arffFile <- arffList) {
    arffLoader.setFile(arffFile)
    if (instances == null) {
      instances = arffLoader.getDataSet
      structure = arffLoader.getStructure
    } else {
      var newInstances = arffLoader.getDataSet
      var i = 0
      while (i < newInstances.numInstances) {
        val instance = newInstances.instance(i)
        instances.add(instance)
        i += 1
      }
    }
    arffLoader.reset
  }

  val combinedFile = new File(s"Arff/Combined.arff")
  val fw = new FileWriter(combinedFile)
  fw.write(instances.toString)
  fw.close
}

这适用于您的情况。

几天前,同样的问题出现了,我用python写了一个小脚本。 在这里你可以找到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM