機械学習用のライブラリ、ApacheMahoutを使用していてちょっと困ったのでメモ
import java.io.*; import java.util.*; import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.recommender.*; import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender; import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; import org.apache.mahout.cf.taste.similarity.ItemSimilarity; class test{ public static void main(String[] argv){ try{ DataModel model=new FileDataModel(new File("test.csv")); ItemSimilarity similarity=new PearsonCorrelationSimilarity(model); Recommender recommender= new GenericItemBasedRecommender(model,similarity); Listrecommendations=recommender.recommend(1,5); for(RecommendedItem recommendation:recommendations){ long recommendCode=recommendation.getItemID(); System.out.println(recommendCode); } }catch(Exception e){} } }
こんなかんじでアイテムベースのレコメンドを作成していたのですが、CSVファイルを読み込んだ際に
java.util.NoSuchElementException at com.google.common.base.AbstractIterator.next(AbstractIterator.java:75) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processLine(FileDataModel.java:384) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processFile(FileDataModel.java:340) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.buildModel(FileDataModel.java:239) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.reload(FileDataModel.java:208) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.(FileDataModel.java:194) at org.apache.mahout.cf.taste.impl.model.file.FileDataModel. (FileDataModel.java:149)
こんなエラーが出て進まない時がある。実行したのはLinux64Bit環境のjdk1.6。
同じものをwindows7のjdk1.6で動かしてもエラーが出ない。。。
読み込んだCSVは600万行程度
よくわからないのですがCSVの最後に改行を入れるとエラーなく動作。
わけわからん