def main(): print("-- Welcome to movie-recommend! --") # for output readability np.set_printoptions(formatter={"float_kind": "{:25f}".format}) # baseline predictor by default mode = BASELINE # read command-line argument, if provided if len(sys.argv) > 1: if sys.argv[1] == IMPROVED or sys.argv[1] == BASELINE: mode = sys.argv[1] print(" You chose: {} predictor!".format(mode)) else: print( " {} is not a valid argument. Default: {} predictor!".format( sys.argv[1], mode ) ) else: print( " You did not provide any arguments. Default: {} predictor!".format(mode) ) # read and parse text files parser = Parser(mode) print(" Parser initialized:") print( " {} test points and {} training points".format( len(parser.test_set), np.count_nonzero(parser.training_matrix) ) ) # initialize predictor and calculate rmse predictor = Predictor(mode, parser.training_matrix, parser.test_set) print(" rmse on test data (baseline): {}".format(predictor.rmse_test)) if predictor.mode == BASELINE: print( " rmse on training data (baseline): {}".format(predictor.rmse_training) ) else: print( " rmse on test data (improved): {}".format(predictor.rmse_test_improved) ) # execute histogram plotting and get error distribution error_dist = ( predictor.calculate_absolute_errors(parser.test_set, predictor.improved_matrix) if predictor.mode == IMPROVED else predictor.calculate_absolute_errors( parser.test_set, predictor.baseline_matrix ) ) print(" Histogram saved to file. Error distribution: {}".format(error_dist))