public static void main(String[] args) throws Exception {
    DataModel model =
        new GenericBooleanPrefDataModel(
            GenericBooleanPrefDataModel.toDataMap(new FileDataModel(new File("ua.base"))));

    RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
    RecommenderBuilder recommenderBuilder =
        new RecommenderBuilder() {
          @Override
          public Recommender buildRecommender(DataModel model) throws TasteException {
            UserSimilarity similarity = new LogLikelihoodSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
            return new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity);
          }
        };
    DataModelBuilder modelBuilder =
        new DataModelBuilder() {
          @Override
          public DataModel buildDataModel(FastByIDMap<PreferenceArray> trainingData) {
            return new GenericBooleanPrefDataModel(
                GenericBooleanPrefDataModel.toDataMap(trainingData));
          }
        };
    IRStatistics stats =
        evaluator.evaluate(
            recommenderBuilder,
            modelBuilder,
            model,
            null,
            10,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,
            1.0);
    System.out.println(stats.getPrecision());
    System.out.println(stats.getRecall());
  }
示例#2
0
  public static void main(String[] args) throws Exception {
    /*DataModel model = new FileDataModel(new File("data.csv"));

    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);

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

    Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

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

    for(RecommendedItem recommendation : recommendations){
    	System.out.println(recommendation);
    }*/

    MysqlDataSource dataSource = new MysqlDataSource();
    dataSource.setServerName("localhost");
    dataSource.setPort(3306);
    dataSource.setDatabaseName("YueYun");
    dataSource.setUser("root");
    dataSource.setPassword("root");

    JDBCDataModel dataModel =
        new MySQLJDBCDataModel(
            dataSource, "tb_track_nopreference", "userId", "trackId", "nopreference", "");

    /*UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);

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

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

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

          for(RecommendedItem recommendation : recommendations){
              System.out.println(recommendation);
          }*/

    DataModel model =
        new GenericBooleanPrefDataModel(GenericBooleanPrefDataModel.toDataMap(dataModel));
    UserSimilarity similarity = new LogLikelihoodSimilarity(model);

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

    Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

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

    for (RecommendedItem recommendation : recommendations) {
      System.out.println(recommendation);
    }
  }