2016-07-05 5 views
2

私は機械学習の目的をしようとする入力に自分のデータをしようとしています現在、データは3つの列(最初のものは時間で、二番目は、コードであり、第3つの数である)と、以下のようなものです:simestampなどでCSVファイルをマハウトに入力して類似機能などを実現する方法は?

2016-06-05 00:00:00  fd04:bd3:80e8:2:215:8d00:35:ca4b 0 

2016-06-05 00:00:00  fd04:bd3:80e8:2:215:8d00:35:f2be 0.12549 

2016-06-05 00:00:00  fd04:bd3:80e8:2:215:8d00:35:c8a1 0.14091 

2016-06-05 00:00:01  fd04:bd3:80e8:2:215:8d00:35:ca4b 0 

2016-06-05 00:00:01  fd04:bd3:80e8:2:215:8d00:35:f2be 0.25098 

2016-06-05 00:00:01  fd04:bd3:80e8:2:215:8d00:35:c8a1 0 

2016-06-05 00:00:02  fd04:bd3:80e8:2:215:8d00:35:ca4b 0 

2016-06-05 00:00:02  fd04:bd3:80e8:2:215:8d00:35:f2be 0.25098 

次は象使いにデータをインポートするためのコードです:

import java.util.List; 
import java.io.File; 
import org.apache.mahout.cf.taste.model.DataModel; 
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; 
import org.apache.mahout.cf.taste.similarity.UserSimilarity; 
import  org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; 
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; 
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; 
import org.apache.mahout.cf.taste.recommender.Recommender; 
import org.apache.mahout.cf.taste.recommender.RecommendedItem; 
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; 
/** 
*/ 
    public class RecommenderIntro { 
     public static void main(String[] args) throws Exception { 

      // TODO code application logic here 
      DataModel model = new FileDataModel (new File("/home/leo/csv_dump11.csv")); 
      UserSimilarity similarity = new PearsonCorrelationSimilarity (model); 
      UserNeighborhood neighborhood = new NearestNUserNeighborhood (2, similarity, model); 
      Recommender recommender = new GenericUserBasedRecommender (model, neighborhood, similarity); 
      List<RecommendedItem> recommendations = recommender.recommend(1, 1); 
      for (RecommendedItem recommendation : recommendations) { 
       System.out.println(recommendation); 
      } 
     } 
    } 

どのようになどの分類機能を実現することができますか?私にお知らせください。どうもありがとうございました!

答えて

0

入力ファイルの形式が、FileDataModelで間違っています。あなたはsource codeを見れば、あなたはその期待が表示されます:インラインjava.lang.NumberFormatExceptionエラーあなたのシーイングである

userID,itemID,timestamp

を。 userIDlongと期待されていて、フォーマットされた日付があります。

また、timestamplongである必要があります。ソース内のドキュメントには、すべての日付をミリ秒に変換したくない場合は、readTimestampFromString(String)を上書きして日付を解析する独自の関数を提供できることが示されています。

したがって、このクラスで動作するようにデータを再フォーマットするか、データを拡張して、関連するメソッドをオーバーライドして(可能であれば)正しく解析する必要があります。

+0

ありがとう、私はJAVAを初めて使っているので、私はデータを再フォーマットできるとは思わない。可能であれば、それをどのように拡張して上書きするかを教えてください。 –

+0

あなたはそれを再フォーマットするために何かを使用することができます、Pythonは、その小さな、bashなど私はデータセットが大きすぎると仮定してExcelの場合、ドキュメントは 'FileDataModel'はあまりにも大きなものに使用すべきではないと言う。 –

+0

しかし、元のデータをインポートするために有効にする方法を教えていただけたら気にしないでください。 –

関連する問題