You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV文件转ARFF文件时如何指定名义属性值的排列顺序

可以通过手动重定义目标名义属性的取值顺序实现,无需调整原有实例的排列顺序,操作如下:

在你原有代码的var instances = loader.getDataSet();之后,创建ArffSaver之前插入以下逻辑:

import java.util.Arrays;
import java.util.List;
import weka.core.Attribute;
import weka.core.Instance;

// 定位目标名义属性的索引,此处替换为你实际的属性名
int targetAttrIndex = instances.attribute("nominal_attr").index();
// 按你需要的顺序定义属性取值列表
List<String> customValueOrder = Arrays.asList("yes", "no");
// 生成使用自定义顺序的新名义属性
Attribute newNominalAttr = new Attribute("nominal_attr", customValueOrder);
// 替换数据集原有属性结构
instances.replaceAttributeAt(newNominalAttr, targetAttrIndex);

// 遍历所有实例,同步值映射(不会修改实例实际取值和排列顺序)
for (int i = 0; i < instances.numInstances(); i++) {
    Instance ins = instances.instance(i);
    String rawValue = ins.stringValue(targetAttrIndex);
    ins.setValue(targetAttrIndex, rawValue);
}

Weka的ArffSaver输出属性声明时,会直接取NominalAttribute对象构造时传入的取值列表顺序,上述操作仅修改了属性的结构定义,没有调整任何实例的排列顺序,也不会改变实例的实际取值,最终输出的ARFF头就会按照你指定的顺序生成@attribute nominal_attr {yes,no}。如果有多个需要自定义顺序的名义属性,重复上述逻辑逐个处理即可。

内容的提问来源于stack exchange,提问作者ma4stro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:24:06