如何合并两个Instance / s并保留classAttribute?

时间:2015-06-03 12:03:59

标签: weka

我想合并两个Instance(s),它们具有相同的classAttribute。 如何合并它们?

example
dataset1.arff
@attribute loc numeric
@attribute ccom numeric
@attribute IsVulnerable {no,yes}

dataset2.arff
@attribute nIncomingCallsUniq numeric
@attribute nOutgoingInternCalls numeric
@attribute IsVulnerable {no,yes}
你可以看到

,名为" IsVulnerable"两个实例具有相同的值。 我想要的目标实例如下:

example
target_dataset.arff
@attribute loc numeric
@attribute ccom numeric
@attribute nIncomingCallsUniq numeric
@attribute nOutgoingInternCalls numeric
@attribute IsVulnerable {no,yes}

1 个答案:

答案 0 :(得分:0)

public static Instance mergeInstance(Instance a, Instance b)
			throws Exception {
		int m = 0;
		double[] newVals = new double[a.numAttributes() + b.numAttributes() + 1];
		for (int j = 0; j < a.numAttributes(); j++, m++) {
			newVals[m] = a.value(j);
		}
		for (int j = 0; j < b.numAttributes(); j++, m++) {
			newVals[m] = b.value(j);
		}
		newVals[m] = a.classValue();
		Instance newI = new Instance(1.0, newVals);
		return newI;
	}

仅供参考,此代码适用于我的项目。对于mergeInstances,只需要为mergeInstance添加一个循环。