gpt4 book ai didi

java - Weka - 组合具有不同 header 的 arff 文件

转载 作者:行者123 更新时间:2023-12-02 05:59:16 25 4
gpt4 key购买 nike

我想合并 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
}

这应该适合您的情况。

关于java - Weka - 组合具有不同 header 的 arff 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24760279/

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