Advertisement
janosoto

Generador de evaluadores

Nov 18th, 2017
372
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.74 KB | None | 0 0
  1. import com.mysql.jdbc.Connection;
  2. import entities.User;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.PrintWriter;
  6. import java.sql.DriverManager;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.List;
  10. import java.util.logging.Level;
  11. import java.util.logging.Logger;
  12. import util.Query;
  13.  
  14. public class EvaluatorFromUser {
  15.     public static void main(String[] args) {
  16.         try {
  17.             Class.forName("com.mysql.jdbc.Driver");
  18.             Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/georrecomendation","root","root");  
  19.             System.out.println("Conexion con la base de datos exitosa");
  20.             Statement stmt = con.createStatement();  
  21.             Query queries = new Query(stmt);
  22.             List<User> users = queries.getNHigherRatingsUsers(50);
  23.             int i = 1;
  24.             for(User user : users){
  25.                 System.out.println("Creando el evaluador del experimento "+i);
  26.                 printEvaluatorFile(user.getId(), i);
  27.                 i++;
  28.             }
  29.         } catch (ClassNotFoundException | SQLException ex) {
  30.             Logger.getLogger(EvaluatorFromUser.class.getName()).log(Level.SEVERE, null, ex);
  31.         }        
  32.     }
  33.    
  34.     public static void printEvaluatorFile(long user_id, int nro_exp){
  35.         StringBuilder sb = new StringBuilder();
  36.         sb.append("import org.grouplens.lenskit.iterative.*\n");
  37.         sb.append("import org.grouplens.lenskit.knn.user.*\n");
  38.         sb.append("import org.grouplens.lenskit.knn.item.*\n");
  39.         sb.append("import org.grouplens.lenskit.mf.funksvd.*\n");
  40.         sb.append("import org.grouplens.lenskit.transform.normalize.*\n");
  41.         sb.append("import org.grouplens.lenskit.eval.metrics.topn.*\n");
  42.         sb.append("trainTest {\n");
  43.         sb.append("    dataset crossfold('user-"+user_id+"') {\n");
  44.         sb.append("        source csvfile('datasets\\\\"+String.format("%05d", nro_exp)+"-rf-data-"+user_id+".csv'){\n");
  45.         sb.append("            delimiter ','\n");
  46.         sb.append("            domain {\n");
  47.         sb.append("                minimum 1.0\n");
  48.         sb.append("                maximum 5.0\n");
  49.         sb.append("                precision 1.0\n");
  50.         sb.append("            }\n");
  51.         sb.append("        }\n");
  52.         sb.append("    }\n");
  53.         sb.append("    algorithm('UserUser') {\n");
  54.         sb.append("        bind ItemScorer to UserUserItemScorer\n");
  55.         sb.append("        bind UserVectorNormalizer to BaselineSubtractingUserVectorNormalizer\n");
  56.         sb.append("        within (UserVectorNormalizer) {\n");
  57.         sb.append("            bind (BaselineScorer, ItemScorer) to ItemMeanRatingItemScorer\n");
  58.         sb.append("        }\n");
  59.         sb.append("    }\n");
  60.         sb.append("    metric RMSEPredictMetric\n");
  61.         sb.append("    metric MAEPredictMetric\n");
  62.         sb.append("    metric topNnDCG {\n");
  63.         sb.append("        listSize 50\n");
  64.         sb.append("        candidates ItemSelectors.allItems()\n");
  65.         sb.append("        exclude ItemSelectors.trainingItems()\n");
  66.         sb.append("    }\n");
  67.         sb.append("    userOutput 'output\\\\"+String.format("%05d", nro_exp)+"results-user-"+user_id+"-nDCG@50.csv'\n");
  68.         sb.append("}\n");
  69.         try (PrintWriter pw = new PrintWriter(new File(String.format("%05d", nro_exp)+"-evaluator-"+user_id+".groovy"))) {
  70.             pw.write(sb.toString());
  71.             pw.close();
  72.         } catch (FileNotFoundException ex) {
  73.             System.out.println("Ha ocurrido un error: "+ex.getLocalizedMessage());
  74.             Logger.getLogger(DataSetFromUser.class.getName()).log(Level.SEVERE, null, ex);
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement