2012-04-26 186 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 
    } 
}