2016-07-12 9 views
0

JavaコードにSet<User>オブジェクトがあります。これはUserクラスのソースです。JavaオブジェクトからWEKAインスタンスを取得する

いくつかの例を示すことができますか。どのようにWEKAのClustererで使用できますか?

+1

はあなたのデータのための.arffファイルを作成する必要があります。その後、データをWekaにインポートできます。 – xro7

+0

@ xro7ファイルを冗長に書くことなくJavaコードで実行する方法はありますか? – Kirill

+0

わかりません。私はちょうどそれを自分でやった。私はあなたのニーズに合わせてここに私のコードを投稿しようとします。 – xro7

答えて

1

最初に、プロジェクトにopencsvを含める必要があります。http://opencsv.sourceforge.net/からデータをCSV形式で印刷する必要があります。

私はcsvデータを書き込むライターと、arffフォーマットを書き込むライターを使用します。 http://www.cs.waikato.ac.nz/ml/weka/arff.htmlあなたは、数字の代わりに文字列データを使用することができます。ここで定義されているよう

 writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(pathtoyourfile+".arff",true), "utf-8")); 
     writer2 = new PrintWriter(pathtoyourfile+".arff", "UTF-8"); 
     writer2.println("@Relation Users"); 
     writer2.println(""); 
     writer2.println("@attribute id string"); 
     writer2.println("@attribute bDate string"); 
     writer2.println("@attribute name string"); 
     writer2.println("@attribute sName string"); 
     writer2.println("@attribute description string"); 
     writer2.println("@attribute city string");   
     writer2.println(""); 
     writer2.println("@data"); 
     writer2.close(); 

     String[] entries = new String[6]; 
     //lets say you have a list with users 
     List<User> users = ..... 

     for(int i=0;i<users.size();i++){ 
      entries[0]= users.get(i).getId(); 
      entries[1]= users.get(i).getbDate(); 
      ..... 
      entries[5]= users.get(i).getCity(); 
      writer.writeNext(entries); 
     } 
     writer.close();