Example usage for org.apache.mahout.cf.taste.impl.model.file FileDataModel FileDataModel

List of usage examples for org.apache.mahout.cf.taste.impl.model.file FileDataModel FileDataModel

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.model.file FileDataModel FileDataModel.

Prototype

public FileDataModel(File dataFile) throws IOException 

Source Link

Usage

From source file:recom.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from w w  w . ja  v a  2  s  .c  o m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, TasteException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {

        DataModel dm = new FileDataModel(new File("info/movies.csv"));
        ItemSimilarity us = new PearsonCorrelationSimilarity(dm);
        //UserNeighborhood neighborhood = new NearestNUserNeighborhood(25, us, dm);
        GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, us);

        List<RecommendedItem> recommendations = recommender.recommend(1, 5);

        /* TODO output your page here. You may use following sample code. */

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet recom</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet recom at " + request.getContextPath() + "</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

From source file:businessreco.BusinessReco.java

public static void main(String args[]) {

    try {/*  ww  w .jav a  2s.com*/

        //Loading the DATA;    

        DataModel dm = new FileDataModel(new File(
                "C:\\Users\\bryce\\Course Work\\3. Full Summer\\Big Data\\Final Project\\Yelp\\FINAL CODE\\Mahout\\data\\busirec_new.csv"));

        // We use the below line to relate businesses. 
        //ItemSimilarity sim = new LogLikelihoodSimilarity(dm);

        TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity((dm));

        //Using the below line get recommendations
        GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);

        //Looping through every business.
        for (LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) {
            long itemId = items.nextLong();

            // For each business we recommend 3 businesses.

            List<RecommendedItem> recommendations = recommender.mostSimilarItems(itemId, 2);

            for (RecommendedItem recommendation : recommendations) {

                System.out.println(itemId + "," + recommendation.getItemID() + "," + recommendation.getValue());

            }

        }
    }

    catch (IOException | TasteException e) {
        System.out.println(e);
    }

}

From source file:cf.wikipedia.WikipediaTasteItemItemDemo.java

License:Apache License

public static void main(String[] args)
        throws IOException, TasteException, SAXException, ParserConfigurationException {
    String recsFile = args[0];//from  w w w  .ja  va 2s. com
    String docIdsTitle = args[1];
    long userId = Long.parseLong(args[2]);
    //Integer neighbors = Integer.parseInt(args[2]);
    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));
    //Create an ItemSimilarity
    ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
    //Create an Item Based Recommender
    ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);
    //Get the recommendations
    List<RecommendedItem> recommendations = recommender.recommend(userId, 5);
    TasteUtils.printRecs(recommendations, handler.map);

}

From source file:cf.wikipedia.WikipediaTasteItemRecDemo.java

License:Apache License

public static void main(String[] args)
        throws IOException, TasteException, SAXException, ParserConfigurationException {
    String recsFile = args[0];//w ww.  j  a  v  a2s .c  om
    String docIdsTitle = args[1];
    long itemId = Long.parseLong(args[2]);
    Integer numRecs = Integer.parseInt(args[3]);
    //Integer neighbors = Integer.parseInt(args[2]);
    InputSource is = new InputSource(new FileInputStream(docIdsTitle));
    SAXParserFactory factory = SAXParserFactory.newInstance();
    factory.setValidating(false);
    SAXParser sp = factory.newSAXParser();
    WikiContentHandler handler = new WikiContentHandler();
    //load the ids and titles
    sp.parse(is, handler);

    //create the data model
    FileDataModel dataModel = new FileDataModel(new File(recsFile));
    //Create an ItemSimilarity
    ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
    //Create an Item Based Recommender
    ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);
    //Get the recommendations for the Item
    List<RecommendedItem> simItems = recommender.mostSimilarItems(itemId, numRecs);
    TasteUtils.printRecs(simItems, handler.map);
}

From source file:cf.wikipedia.WikipediaTasteItemSimilarity.java

License:Apache License

public static void main(String[] args)
        throws IOException, TasteException, SAXException, ParserConfigurationException {
    String recsFile = args[0];/*from   www  .j  av a  2  s  .c o m*/
    String docIdsTitle = args[1];
    long itemId1 = Long.parseLong(args[2]);
    long itemId2 = Long.parseLong(args[3]);

    //Integer neighbors = Integer.parseInt(args[2]);
    InputSource is = new InputSource(new FileInputStream(docIdsTitle));
    SAXParserFactory factory = SAXParserFactory.newInstance();
    factory.setValidating(false);
    SAXParser sp = factory.newSAXParser();
    WikiContentHandler handler = new WikiContentHandler();
    //load the ids and titles
    sp.parse(is, handler);

    //create the data model
    FileDataModel dataModel = new FileDataModel(new File(recsFile));
    //Create an ItemSimilarity
    ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
    double res = itemSimilarity.itemSimilarity(itemId1, itemId2);
    System.out.println("Result: " + res);
}

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  ww  w  .  ja v  a2 s .  co  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.checkup.mahout.test.ExampleTest.java

@Test
public void quickstart() throws IOException, TasteException {
    DataModel model = new FileDataModel(new File(Resources.quickstart_csv.getFile()));
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
    UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    List<RecommendedItem> recommendations = recommender.recommend(2, 3);
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    }/*from w  ww  .  j  a  va2s.  c  o m*/
}

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

/**
 * @param args the command line arguments
 * @throws java.io.IOException/*from w  w w.j a v a  2 s  . c o  m*/
 * @throws org.apache.mahout.cf.taste.common.TasteException
 */
public static void main(String[] args) throws IOException, TasteException {
    final Scanner entrada = new Scanner(System.in);

    DataModel model = new FileDataModel(new File("ml-100k/ua.base"));
    UserSimilarity similarity = null;
    int obciones;
    System.out.println("RECOMENDADOR MEDIANTE FILTRADO COLABORATIVO");
    do {
        System.out.println("Seleccione la funcion de similitud a utilizar para recomendar");
        System.out.println("marque 1 para la funcion euclidiana");
        System.out.println("marque 2 para la funcion de Pearson");
        System.out.println("marque 3 para la funcion de Log-likelihood");
        System.out.println("marque 4 para la funcion de Tanimoto");

        obciones = entrada.nextInt();
        switch (obciones) {
        case 1:
            similarity = new EuclideanDistanceSimilarity(model);
            break;
        case 2:
            similarity = new PearsonCorrelationSimilarity(model);
            break;
        case 3:
            similarity = new LogLikelihoodSimilarity(model);
            break;
        case 4:
            similarity = new TanimotoCoefficientSimilarity(model);
            break;
        }
    } while (obciones != 1 && obciones != 2 && obciones != 3 && obciones != 4);

    int queHago = 0;
    try {

        do {
            System.out.println("\n Seleccione... ");
            System.out.println("1 para realizar una recomendacion ");
            System.out.println("2 si quiere probar una recomendacion ");
            System.out.println("3 para evaluar precision y recall");
            System.out.println("4 si quiere salir");
            queHago = entrada.nextInt();
            switch (queHago) {
            case 1:
                System.out.println("Recomendando...");
                Recomendar(entrada, model, similarity);
                break;
            case 2:
                System.out.println(
                        "Realizando una prueba al recomendador tomado como conjunto de entrenamiento el 70% "
                                + "del dataset y el 30% como conjunto de prueba. Ademas se evalua mediante el promedio de las diferencias."
                                + "Mientras mas pequeo es este valor mejor es la recomendacion");
                System.out.println("Si el dataset es muy grande la evaluacion puede tardar un poquito..");
                Probar(entrada, model, similarity);
                break;
            case 3:
                System.out.println(
                        "Evaluando precision y recall tomando como limite entre una recomendacion bueno o mala "
                                + "la suma entre la media y la desviaci'on estandar (threshold =  + ?)...");
                evaluarPrecicionRecall(entrada, model, similarity);
                break;
            }
        } while (queHago != 4);
    } catch (IOException | TasteException e) {
        System.out.println(e.getMessage());
    }
}

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

private void btnGetDatasetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGetDatasetActionPerformed
    try {/*from ww w.  j a  v  a 2 s  . c  o m*/
        // TODO add your handling code here:
        JFileChooser filechoser = new JFileChooser();
        int seleccion = filechoser.showOpenDialog(null);
        if (seleccion == JFileChooser.APPROVE_OPTION) {

            File dataset = filechoser.getSelectedFile();

            model = new FileDataModel(dataset);

            urlDataset.setText(dataset.getPath());
            btnRecomendar.setEnabled(true);
            btnEvaluarRecomendacion.setEnabled(true);
            btnEvaluarPrecicionRecall.setEnabled(true);
        }

    } catch (IOException ex) {
        Logger.getLogger(recomendadorUI.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(rootPane, ex.getMessage());
    }
}

From source file:com.mycompany.mahoutrecco.App.java

public static void main(String[] args) throws Exception {

    DataModel model = new FileDataModel(new File("data/justBeforeMahout.csv"));

    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
    UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

    List<RecommendedItem> recommendations = recommender.recommend(503046, 5);
    System.out.println(recommendations);
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    }//from  www  . j  a v  a 2  s.c o  m
}