def predict(movie_id): target_movie = Movies.get(movie_id) #target_movie = get_movie(movie_id) target_ratings = make_target_ratings(movie_id) # target_movie_rating = rating my_movie_ids = movie_ids(0) movies_to_compare = [] for id in my_movie_ids: ratings = make_target_ratings(id) movies_to_compare.append(ratings) similarities = [] for ratings in movies_to_compare: our_rating = ratings[0] # ratings is not a list, it is a dictionary similarity = pearson(target_ratings, ratings) tup = (similarity, our_rating) similarities.append(tup) # (similarity, ranking) top_five = sorted(similarities) top_five.reverse() top_five = top_five[:5] num = 0.0 den = 0.0 # Use a weighted mean rather than a strict top similarity for sim, m in top_five: num += (float(sim) * m) den += sim rating = num/den print "Best guess for movie %d: %s is %.2f stars"%\ (movie_id, target_movie['title'], rating)
def load_movies(): """Load movies from u.item into database.""" print "Movies" # Delete all rows in table, so if we need to run this a second time, # we won't be trying to add duplicate users Movies.query.delete() # Read u.user file and insert data for i, row in enumerate(open("seed_data/u.item")): row = row.rstrip() row = row.split("|")[:-19] movie_id, movie, release_date, __, imdb_url = row title = movie.split("(") title = title[0].rstrip() title = title.decode("latin-1") if release_date: released_at = datetime.datetime.strptime(release_date, "%d-%b-%Y") else: released_at = None movie = Movies(title=title, released_at=released_at, imdb_url=imdb_url) # We need to add to the session or it won't ever be stored db.session.add(movie) if i % 100 == 0: print i # Once we're done, we should commit our work db.session.commit()
def load_movies(): """Load movies from u.item into database.""" print("Movies") # Delete all rows in table, so if we need to run this a second time, # we won't be trying to add duplicate users Movies.query.delete() # Read u.user file and insert data for row in open("seed_data/u.item"): row = row.rstrip() movie_id, movie_title, release_at, space, imdb_url, *args = row.split( "|") release_date = datetime.strptime(release_at, "%d-%b-%Y") for i, letter in enumerate(movie_title): if letter == '(': movie_title = movie_title[:i] movie = Movies(movie_id=movie_id, movie_title=movie_title, release_at=release_date, imdb_url=imdb_url) # We need to add to the session or it won't ever be stored db.session.add(movie) # Once we're done, we should commit our work db.session.commit()
def load_movies(): """Load movies from u.item into database.""" print("Movies") Movies.query.delete() for row in open("seed_data/u.item"): row = row.rstrip() movie_id, title, release_date, junk, imdb = row.split("|")[:5] title = title[:-7] if release_date: released_at = datetime.strptime(release_date, "%d-%b-%Y") else: released_at = None movie = Movies(movie_id=movie_id, title=title, release_date=released_at, imdb=imdb) db.session.add(movie) db.session.commit()
def post_movie(payload): if request.data: body = request.get_json() print(body) title = body['title'] releaseDate = body['releaseDate'].split('/') year = int(releaseDate[0]) month = int(releaseDate[1]) day = int(releaseDate[2]) releaseDate = datetime(year, month, day) try: movie = Movies(title=title, releaseDate=releaseDate) movie.insert() return jsonify({ 'success': True, 'movies': [movie.format()] }) except: abort(500)
def movie_details(): movie_id = int(request.form["movie_id"]) average_rating = movies.average_rating(movie_id) md = Movies.get(movie_id) return render_template("details.html", md=md, avg = average_rating)