Weka — объединение файлов arff с разными заголовками

Я хочу объединить 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

Ни один из них не работал.

Буду признателен, если чем поможет.

Спасибо большое.


person Community    schedule 15.07.2014    source источник


Ответы (2)


Вы пытались использовать класс 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
}

Это должно работать для вашего случая.

person Mayank Agarwal    schedule 15.07.2014

Несколько дней назад возникла такая же проблема, и я написал небольшой скрипт на python. Здесь вы можете найти его.

person ugursogukpinar    schedule 23.05.2016