Java Weka-组合具有不同头的arff文件
我想合并2个arff文件。它们具有相同的属性,但属性下的值会更改 例如:Java Weka-组合具有不同头的arff文件,java,data-mining,weka,arff,Java,Data Mining,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)中进行了尝试: 他们都没有工作 如果有任何帮助,我将
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)中进行了尝试:
他们都没有工作
如果有任何帮助,我将不胜感激
非常感谢。您是否尝试过使用MergeSet类来合并文件。您可以从这里尝试: 您还可以编写一个小代码来合并两个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
}
导入weka.core.converters.ArffLoader
导入java.io.{File,FileWriter}
def combinealarfs(){
var arffLoader=新的arffLoader
val arffDir:File=新文件(s“Arff/”)
val arffList=arffDir.listFiles;
var实例:实例=null
var结构:Instances=null
if(arffList==null){
打印“警告:“$mode”的Arff列表为空。”)
返回
}
对于(arffFile,几天前,同样的问题出现了,我用python编写了一个小脚本。
你可以找到它
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
}