List of usage examples for org.apache.mahout.cf.taste.impl.model.file FileDataModel FileDataModel
public FileDataModel(File dataFile) throws IOException
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 }