将csv文件转换为arff文件时如何指定标称属性值的顺序?
how to specify nominal attribute value's order when converting csv file into arff file?
我正在尝试使用以下代码将 csv 文件转换为 arff 文件。
var csvFile = new File("/path/to/input/file.csv");
var arffOutputFile = new File("/path/to/output/file.arff");
var loader = new CSVLoader();
loader.setSource(csvFile);
var instances = loader.getDataSet();
var saver = new ArffSaver();
saver.setInstances(instances);
saver.setFile(arffOutputFile);
saver.writeBatch();
此代码有效,但问题如下。在我的属性列表中,我有一个标称属性,其值为 {yes, no}
,我需要 arff header 显示为第一个值 yes
。为了更清楚,我需要 @attribute nominal_attr {yes,no}
而不是 arff 输出 header 中的 @attribute nominal_attr {no,yes}
。问题是顺序由 instances
中第一个 Instance
的值决定:如果 csv 输入文件中的第一行具有 no
值,则在 header会有@attribute nominal_attr {no,yes}
。
有没有办法强制 ArffSaver
在 header 中使用特定顺序而不更改 Instances
的顺序?
与其修复输出(即 ArffSaver),更容易修复输入(即 CSVLoader)。 -L
命令行选项(GUI 中的 nominalLabelSpecs
属性)允许您指定名义属性的标签。这样,如果其中一个 CSV 文件不包含所有标签,您可以强制执行顺序和可用标签。
也可以使用以下过滤器来更改标签的顺序:
我正在尝试使用以下代码将 csv 文件转换为 arff 文件。
var csvFile = new File("/path/to/input/file.csv");
var arffOutputFile = new File("/path/to/output/file.arff");
var loader = new CSVLoader();
loader.setSource(csvFile);
var instances = loader.getDataSet();
var saver = new ArffSaver();
saver.setInstances(instances);
saver.setFile(arffOutputFile);
saver.writeBatch();
此代码有效,但问题如下。在我的属性列表中,我有一个标称属性,其值为 {yes, no}
,我需要 arff header 显示为第一个值 yes
。为了更清楚,我需要 @attribute nominal_attr {yes,no}
而不是 arff 输出 header 中的 @attribute nominal_attr {no,yes}
。问题是顺序由 instances
中第一个 Instance
的值决定:如果 csv 输入文件中的第一行具有 no
值,则在 header会有@attribute nominal_attr {no,yes}
。
有没有办法强制 ArffSaver
在 header 中使用特定顺序而不更改 Instances
的顺序?
与其修复输出(即 ArffSaver),更容易修复输入(即 CSVLoader)。 -L
命令行选项(GUI 中的 nominalLabelSpecs
属性)允许您指定名义属性的标签。这样,如果其中一个 CSV 文件不包含所有标签,您可以强制执行顺序和可用标签。
也可以使用以下过滤器来更改标签的顺序: