我正在使用InstanceQuery和 SQL 查询来构建我的Instances。但是我的查询结果并不总是与 SQL 中的正常顺序相同。由于这个由不同 SQL 构造的实例具有不同的标头。一个简单的例子可以在下面看到。我怀疑我的结果会因为这种行为而改变。
标题 1
@attribute duration numeric
@attribute protocol_type {tcp,udp}
@attribute service {http,domain_u}
@attribute flag {SF}
标题 2
@attribute duration numeric
@attribute protocol_type {tcp}
@attribute service {pm_dump,pop_2,pop_3}
@attribute flag {SF,S0,SH}
我的问题是:如何为实例构造提供正确的标头信息。
类似下面的工作流程是可能的吗?
- 从 arff 文件或其他地方获取预先准备好的头信息。
- 给实例构造这个头信息
- 调用 sql 函数并获取实例(标头 + 数据)
我正在使用以下 sql 函数从数据库中获取实例。
public static Instances getInstanceDataFromDatabase(String pSql
,String pInstanceRelationName){
try {
DatabaseUtils utils = new DatabaseUtils();
InstanceQuery query = new InstanceQuery();
query.setUsername(username);
query.setPassword(password);
query.setQuery(pSql);
Instances data = query.retrieveInstances();
data.setRelationName(pInstanceRelationName);
if (data.classIndex() == -1)
{
data.setClassIndex(data.numAttributes() - 1);
}
return data;
} catch (Exception e) {
throw new RuntimeException(e);
}
}