2012-04-26 185 views
14

我一直试图将这个数据集http://archive.ics.uci.edu/ml/datasets/Communities+and+Crime+Unnormalized转换成Weka,根本没有运气。我将它转换为CSV,然后将其加载到Weka,然后尝试将其转换为ARFF,但仍然给我错误"attribute names are not unique"使用weka将CSV转换为ARFF

另外,我是否必须从测试数据集中传播训练数据集或将它们放在一起?

回答

1

我没有遇到任何问题。好的,请执行以下操作。在您指定的网页中,

  • 在“.avff标题for weka:”和“相关论文”之间复制该段。
  • 将其粘贴到.txt文件
  • 打开在this location
  • 数据文件复制实例和追加,为您的.txt文件@data部分
  • 之后.txt文件保存为.arff文件

你现在很好去。

我是否必须从测试数据集中挖出训练数据集或将它们放在一起?

这取决于你的分类方法。如果您选择10倍简历,则将它们放在一起。如果您想使用惯例方法,请将它们分开。再次,这一切都取决于你的方法。

+0

为什么地球上会有人给这个问题负面投票?而且,当它解决了这个问题时,为什么我的回答得到了否定的投票?奇特! – 2012-05-03 15:41:47

+0

OP要求CSV转换为ARFF。但是你没有回答那部分。因此,我觉得有人低估了。 – user13107 2013-04-25 08:04:49

13

在WEKA中实现了一些转换器。以下是有关这一主题的API网页:http://weka.sourceforge.net/doc.stable/weka/core/converters/package-summary.html

例如这里是如何从CSV转换为ARFF:

java -cp /path/to/weka.jar weka.core.converters.CSVLoader filename.csv > filename.arff 
+1

只为我这样一个愚蠢的人发表评论 - 上面的命令是在安装weka的目录之后运行的,也就是你可以看到'weka/core/converters/CSVLoader'作为目录结构的地方。 – user13107 2013-04-25 08:10:52

+1

你也可以执行'java -cp /path/to/weka.jar weka.core.converters.CSVLoader filename.csv> filename.arff' – Phani 2014-06-24 22:33:14

+0

我得到这个错误 '错误:无法找到或加载主类weka。 core.converters.CSVLoader' 如何克服这一点? – NIMISHAN 2016-01-31 15:09:37

20

您还可以使用ArffViewer(工具 - > ArffViewer或Ctrl + A)。然后打开你的CSV文件。

接下来转到文件 - >另存为...并选择阿夫数据文件(应该被默认选中)。

请注意,您的字段必须用逗号分隔,而不是分号。

+1

我无法在ArffViewer中找到将数字转换为名义的选项,反之亦然。它存在吗? – 2014-01-26 06:40:55

+1

这工作完美!应该是选定的答案 – CrashOverride 2015-11-25 02:10:33

-1

它工作

,例如: - C:\用户\用户\桌面>的java -cp “E:\数据\ WEKA-3-6-10 \ weka.jar ;.” weka.core.converters.CSVLoader data1.csv >> data1.arff 1.转换前检查excel中的csv,因为任何单元格都不应该是错误的2.检查属性是否正确

for plain csv - 您必须添加标题行,即使x,y,z,...根据需要

5

将您的.CSV格式文件上传到this。由此您的.CSV格式将被转换为WEKA .arff格式。完成将.arff文件提取到Weka工具后。现在您可以继续进行数据分析。

2

您需要csv中的标题字段。您需要在第一行的csv文件中添加attr0,attr1,...标签。

0

将.csv转换为.arff文件格式以在Weka中使用。 注意: .csv文件应该是正确的,否则它不会转换为.arff文件。它不应该在列中包含任何空值。 下载weka core jar。 在Eclipse - >配置构建路径,添加的秧鸡核心罐子和编写下面一行代码并执行该代码:

CSVToArff.java

import weka.core.Instances; 
import weka.core.converters.ArffSaver; 
import weka.core.converters.CSVLoader; 

import java.io.File; 

public class CSVToArff { 

    public static void main(String[] args) throws Exception { 


    // load CSV 
    CSVLoader loader = new CSVLoader(); 
    loader.setSource(new File("Provide the input file location (.csv) ")); 
    Instances data = loader.getDataSet(); 

    // save ARFF 
    ArffSaver saver = new ArffSaver(); 
    saver.setInstances(data); 
    saver.setFile(new File("Provide the output file location (.arff) "); 
    saver.writeBatch(); 
    // .arff file will be created in the output location 
    } 
}