【问题标题】:item based collaborative filtering algorithm to calculate similarity betweeb items using mahout基于项目的协同过滤算法使用 mahout 计算项目之间的相似度
【发布时间】:2016-04-17 00:07:39
【问题描述】:

我一直在使用此代码,但我遇到了错误

Exception in thread "main" 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:385)
    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.<init>(FileDataModel.java:194)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:149)
    at ItemRecommender.main(ItemRecommender.java:22) 

是否有一些 jar 文件错误,我需要导入或等等...帮我卡住了....代码如下...

import java.io.File;
import java.util.List;
import java.io.IOException;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;

public class ItemRecommender {


public static void main(String[] args) {

    try{

    DataModel dm = new FileDataModel(new File("data/movies.csv"));


    ItemSimilarity sim = new LogLikelihoodSimilarity(dm);


    GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);

    int x=1;

    for(LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();){
        long itemId = items.nextLong();
        List<RecommendedItem> recommendations = recommender.mostSimilarItems(itemId, 5);

        for(RecommendedItem recommendation : recommendations){
            System.out.println(itemId + "," + recommendation.getItemID() + "," + recommendation.getValue());

        }
        x++;
        //if(x>10) System.exit(1);

    }

    }catch(IOException e)
{ System.out.println("There was an error.");
    e.printStackTrace();
} catch(TasteException e) 
{
    System.out.println("There was a taste exception.");
    e.printStackTrace();
}

} }

【问题讨论】:

    标签: java hadoop mahout


    【解决方案1】:

    Mahout“品味”框架已被弃用,很快就会被移除。最好在这里查看新版本的 item-similarity:http://mahout.apache.org/users/algorithms/intro-cooccurrence-spark.html

    顺便说一句,这里有一个完全实现的推荐器,带有事件摄取和服务层:https://github.com/actionml/template-scala-parallel-universal-recommendation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2014-11-23
      相关资源
      最近更新 更多