2012-05-29 4 views

답변

4

csv 파일이 .txt으로 끝나는 것을 의미합니까?

1,434,2236,5,569,some,value,other,value 
4,347,2351,1,232,different,value,than,those 

그 다음은 쉼표로했다 구분 된 값 (CSV)과 웨카는 arff에 CSV 파일을 변환 클래스와 함수가 있습니다 : http://weka.wikispaces.com/Converting+CSV+to+ARFF 당신은 명령 줄에서 다음을 사용할 수를 파일 내부의 데이터는 다음과 같습니다 경우 이 같은 :

java weka.core.converters.CSVLoader filename.csv > filename.arff 

그렇지 않으면, arff 형식으로 (블로그 게시물 또는 책이나 에세이 같은 것들을) 텍스트 파일을 회전에 대한 WEKA에서 큰 문서에 D3mon - 1stVFW의 코멘트 링크 @. http://weka.wikispaces.com/ARFF+files+from+Text+Collections는이 또한 다음과 같이 명령 줄에서 호출 할 수 있습니다

java weka.core.converters.TextDirectoryLoader /directory/with/your/text/files > output.arff 
3

-dir 인수 지정을 누락 : java weka.core.converters.TextDirectoryLoader -dir /directory/with/your/text/files > output.arff

0

이 솔루션은 당신이 .csv 형식의 데이터를 가지고 가정 - KAZ의 솔루션을 참조하십시오.

한 가지 간단한 방법은 3.6.11 버전 (Mac을 사용 중입니다)에서 Explorer를 열고 Preprocess 탭에서 "Open file ..."을 선택하는 것입니다. .arff 파일을 열려고합니다. 그런 다음 대화 상자 아래쪽에있는 파일 형식을 묻는 곳에서 .csv로 변경합니다. 이제 Weka에 CSV 파일을 곧바로로드 할 수 있습니다. CSV 파일의 첫 번째 줄이 머리글 줄이면이 ​​이름이 특성 이름으로 사용됩니다.

전처리 탭의 오른쪽에는 "저장 ..."버튼이 있습니다. 그것을 클릭하고 데이터를 .arff 파일로 저장할 수 있습니다.

이것은 설명하기에 다소 길지만 수행하는 데 몇 분이 걸리고 매우 직관적입니다.

-1

패키지 WekaDemo;

공용 클래스 Txt2Arff {

static ArrayList inList=new ArrayList(); 
    static String colNames[]; 
    static String colTypes[]; 
    static String indata[][]; 
    static ArrayList clsList=new ArrayList(); 
    static ArrayList disCls=new ArrayList(); 

    static String res=""; 

public String genTrain() 
    {File fe=new File("input2.txt"); 

    FileInputStream fis=new FileInputStream(fe); 
    byte bt[]=new byte[fis.available()]; 
    fis.read(bt); 
    fis.close(); 
    String st=new String(bt); 
    String s1[]=st.trim().split("\n"); 
    String col[]=s1[0].trim().split("\t"); 
    colNames=col; 
    colTypes=s1[1].trim().split("\t"); 

    for(int i=2;i<s1.length;i++) 
    { 
     inList.add(s1[i]); 

    } 
    ArrayList at1=new ArrayList(); 
    for(int i=0;i<inList.size();i++) 
    { 
     String g1=inList.get(i).toString(); 
     if(!g1.contains("?")) 
     { 
      at1.add(g1); 
      res=res+g1+"\n"; 
     } 
    } 
    indata=new String[at1.size()][colNames.length-1]; // remove cls 


    for(int i=0;i<at1.size();i++) 
    { 
     String s2[]=at1.get(i).toString().trim().split("\t"); 
     for(int j=0;j<s2.length-1;j++) 
     { 
      indata[i][j]=s2[j].trim();      
     } 
     if(!disCls.contains(s2[s2.length-1].trim())) 
      disCls.add(s2[s2.length-1].trim()); 
     clsList.add(s2[s2.length-1]); 
    } 
     String ar="@relation tra\n"; 
     try 
     { 

for(int i=0;i<colNames.length-1;i++) // all columName which you have split 
    //and store in Colname 
      { 
      //where yor attitude in nominal or you can say character value 
       if(colTypes[i].equals("con")) 
     ar=ar+"@attribute "+colNames[i].trim().replace(" ","_")+" real\n"; 
       else 
       { 
        ArrayList at1=new ArrayList(); 
        for(int j=0;j<indata.length;j++) //your all numeric data 
        { 
         if(!at1.contains(indata[j][i].trim())) 
          at1.add(indata[j][i].trim()); 
        } 
        String sg1="{"; 
        for(int j=0;j<at1.size();j++) 
        { 
         sg1=sg1+at1.get(j).toString().trim()+","; 
        } 
        sg1=sg1.substring(0,sg1.lastIndexOf(",")); 
        sg1=sg1+"}"; 


    ar=ar+"@attribute "+colNames[i].trim().replace(" ", "_")+" "+sg1+"\n"; 
       } 
      } 

      //end of attribute 

      // now adding a class Attribute 

      ArrayList dis=new ArrayList(); 
      String c1=""; 
      for(int i=0;i<clsList.size();i++) 
      { 
       String g=clsList.get(i).toString().trim(); 
       if(!dis.contains(g)) 
       { 
        dis.add(g); 
        c1=c1+g+","; 
       } 
      } 
      c1=c1.substring(0, c1.lastIndexOf(",")); 
      ar=ar+"@attribute class {"+c1+"}\n"; //attribute name 
      //adding class attribute is done 
      //now data 
      ar=ar+"@data\n"; 

      for(int i=0;i<indata.length;i++) 
      { 
       String g1=""; 
       for(int j=0;j<indata[0].length;j++) 
       { 
        g1=g1+indata[i][j]+","; 
       } 
       g1=g1+clsList.get(i); 
       ar=ar+g1+"\n"; 
      }     
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return ar; 
    } 

    public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 
    Txt2Arff T2A=new Txt2Arff(); 

    String ar1=T2A.genTrain(); 

    File fe1=new File("tr.arff"); 
    FileOutputStream fos1=new FileOutputStream(fe1); 
    fos1.write(ar1.getBytes()); 
    fos1.close(); 
}} 
관련 문제