Example usage for org.apache.mahout.cf.taste.impl.neighborhood NearestNUserNeighborhood NearestNUserNeighborhood

List of usage examples for org.apache.mahout.cf.taste.impl.neighborhood NearestNUserNeighborhood NearestNUserNeighborhood

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.neighborhood NearestNUserNeighborhood NearestNUserNeighborhood.

Prototype

public NearestNUserNeighborhood(int n, UserSimilarity userSimilarity, DataModel dataModel)
        throws TasteException 

Source Link

Usage

From source file:be.ugent.tiwi.sleroux.newsrec.newsreccollaborativefiltering.MahoutTermRecommender.java

public Map<Long, List<RecommendedItem>> makeRecommendations(int n) throws IOException, TasteException {

    DataModel model = new FileDataModel(new File(mahoutInputFile), ";");
    UserSimilarity similarity = new TanimotoCoefficientSimilarity(model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
    Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

    LongPrimitiveIterator it = model.getUserIDs();
    Map<Long, List<RecommendedItem>> output = new HashMap<>(model.getNumUsers());

    while (it.hasNext()) {
        long user = it.nextLong();
        List<RecommendedItem> items = recommender.recommend(user, n);
        output.put(user, items);/*from w  w w.j  ava 2  s  .c  om*/
    }

    return output;
}

From source file:cf.wikipedia.WikipediaTasteUserDemo.java

License:Apache License

public static void main(String[] args)
        throws IOException, TasteException, SAXException, ParserConfigurationException {
    String recsFile = args[0];//from  w  w w .j av a  2  s  . c o  m
    String docIdsTitle = args[1];
    Integer neighborhoodSize = Integer.parseInt(args[2]);
    Long userId = Long.parseLong(args[3]);
    boolean printCommonalities = Boolean.parseBoolean(args[4]);
    InputSource is = new InputSource(new FileInputStream(docIdsTitle));
    SAXParserFactory factory = SAXParserFactory.newInstance();
    factory.setValidating(false);
    SAXParser sp = factory.newSAXParser();
    WikiContentHandler handler = new WikiContentHandler();
    sp.parse(is, handler);
    //create the data model
    FileDataModel dataModel = new FileDataModel(new File(recsFile));
    System.out.println("Data Model: Users: " + dataModel.getNumUsers() + " Items: " + dataModel.getNumItems());

    UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);
    // Optional:
    userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(dataModel));
    //Get a neighborhood of users
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, userSimilarity, dataModel);
    //Create the recommender
    Recommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, userSimilarity);
    System.out.println("-----");
    System.out.println("User: " + userId);
    //Print out the users own preferences first
    TasteUtils.printPreferences(dataModel, userId, handler.map);
    if (printCommonalities) {
        long[] users = neighborhood.getUserNeighborhood(userId);
        for (int i = 0; i < users.length; i++) {
            long neighbor = users[i];
            System.out.println("Neighbor: " + neighbor);
            TasteUtils.printCommonalities(dataModel, userId, neighbor, handler.map);
        }

        System.out.println("");
    }
    //Get the top 5 recommendations
    List<RecommendedItem> recommendations = recommender.recommend(userId, 5);
    TasteUtils.printRecs(recommendations, handler.map);
}

From source file:com.corchado.testRecomender.evaluarPrecionRecallUI.java

private void calcularPrecicionRecall() {
    try {/* ww w .  jav  a 2 s.  c  om*/

        RandomUtils.useTestSeed();
        RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
        RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
            @Override
            public Recommender buildRecommender(DataModel model) throws TasteException {
                UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model);
                return new GenericUserBasedRecommender(model, neighborhood, similarity);
            }
        };
        IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 2,
                GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

        labelPrecicion.setText("Precisin: " + stats.getPrecision());
        labelRecal.setText("Recall: " + stats.getRecall());

    } catch (TasteException ex) {
        Logger.getLogger(evaluarPrecionRecallUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:com.corchado.testRecomender.evaluarRecomendadorUI.java

private void Evaluar() {
    try {//w ww  .jav a  2 s.  c  o  m

        RandomUtils.useTestSeed();
        RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
        RecommenderBuilder builder = new RecommenderBuilder() {
            @Override
            public Recommender buildRecommender(DataModel model) throws TasteException {

                //                UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
                UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model);

                return new GenericUserBasedRecommender(model, neighborhood, similarity);
            }
        };

        double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
        labelEvaluacion.setText("Evaluacin: " + score);
    } catch (TasteException ex) {
        Logger.getLogger(evaluarRecomendadorUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:com.corchado.testRecomender.recomendador.java

public static void Recomendar(Scanner entrada, DataModel model, final UserSimilarity similarity)
        throws IOException, TasteException {
    //        obtener los parametros del usuario
    int idUsuario;
    System.out.println("Entre el id de usuario");
    idUsuario = entrada.nextInt();/*from  w w w . j a  va2  s  .  co m*/

    System.out.println("Entre la cantidad de recomendaciones");
    int cantRecomendaciones;
    cantRecomendaciones = entrada.nextInt();
    //------------------------------------------
    //recomendador

    UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);

    Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    //parametros:
    //usuario al que se recomdienda
    //cantidad de items a recomendar 
    List<RecommendedItem> recommendations = recommender.recommend(idUsuario, cantRecomendaciones);

    System.out.println("Items recomendados: ");
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);

    }

}

From source file:com.corchado.testRecomender.recomendador.java

public static void Probar(final Scanner entrada, DataModel model, final UserSimilarity similarity)
        throws IOException, TasteException {
    RandomUtils.useTestSeed();//from w w  w .  ja v a 2  s. com
    RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {

            //                UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);

            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    System.out.println("evaluacion: " + score);
}

From source file:com.corchado.testRecomender.recomendador.java

public static void evaluarPrecicionRecall(final Scanner entrada, DataModel model,
        final UserSimilarity similarity) throws IOException, TasteException {
    RandomUtils.useTestSeed();//w  w  w  .  ja v  a 2s . c o  m
    RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };
    IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    System.out.println("Precision: " + stats.getPrecision());
    System.out.println("Recal: " + stats.getRecall());
}

From source file:com.corchado.testRecomender.recomendarUI.java

private void btnRecomendarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRecomendarActionPerformed
    try {//from w  w w  .  ja v a2  s .  com
        // TODO add your handling code here:
        int numeroUsuario = Integer.parseInt(SpinnerNumeroUsuario.getValue().toString());
        int cantRecomendaciones = Integer.parseInt(SpinnerCantRecomendacion.getValue().toString());

        //recomendador
        UserNeighborhood neighborhood = new NearestNUserNeighborhood(CantVecindad, similarity, model);
        Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
        List<RecommendedItem> recommendations = recommender.recommend(numeroUsuario, cantRecomendaciones);

        listRecomendaciones.removeAll();
        if (recommendations.isEmpty()) {
            listRecomendaciones.add("no se encontraron recomendaciones");
        } else {
            for (RecommendedItem recommendation : recommendations) {
                listRecomendaciones.add(recommendation.toString());
            }
        }
    } catch (TasteException ex) {
        Logger.getLogger(recomendarUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:com.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java

public Recommender buildUserBasedRecommender(DataModel dataModel) {
    Recommender recommender;//www. ja  v  a  2 s. c  o  m
    recommender = null;

    try {
        UserSimilarity similarity = new CachingUserSimilarity(
                new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED), dataModel);
        UserNeighborhood neighborhood;

        switch (this.userNeighborhoodAlgorithm) {
        case "threshold":
            neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel);
            break;
        case "nearestnuser":
            neighborhood = new NearestNUserNeighborhood(this.nearestNUserValue, similarity, dataModel);
            break;
        default:
            neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel);
            break;
        }

        recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);

    } catch (TasteException exception) {
        System.err.println(exception);
    }

    return recommender;
}

From source file:com.staticvillage.recommender.PlaceRecommender.java

License:Apache License

public PlaceRecommender(DataModel model, int neighborhoodSize, Indexer<Place> indexer, GeoPoint geoPoint)
        throws TasteException {
    this.model = model;
    this.indexer = indexer;
    this.geoPoint = geoPoint;

    UserSimilarity similarity = new EuclideanDistanceSimilarity(model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, similarity, model);

    delegate = new GenericUserBasedRecommender(model, neighborhood, similarity);
}