ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)
生活随笔
收集整理的這篇文章主要介紹了
ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ML之RS:基于用戶的CF+LFM實現的推薦系統(基于相關度較高的用戶實現電影推薦)
?
目錄
輸出結果
實現代碼
?
?
?
輸出結果
?
?
實現代碼
#ML之RS:基于CF和LFM實現的推薦系統 import numpy as np import pandas as pd import matplotlib.pyplot as plt import time import warnings warnings.filterwarnings('ignore') np.random.seed(1)plt.style.use('ggplot') # data = pd.read_csv('ml-20m/ratings_smaller.csv', index_col=0) # movies = pd.read_csv('ml-20m/movies_smaller.csv')#1、導入數據集 data = pd.read_csv('ml-latest-small/ratings.csv') movies = pd.read_csv('ml-latest-small/movies.csv') movies = movies.set_index('movieId')[['title', 'genres']]#2、觀察數據集 # How many users? print (data.userId.nunique(), 'users')# How many movies? print (data.movieId.nunique(), 'movies')# How possible ratings? print (data.userId.nunique() * data.movieId.nunique(), 'possible ratings')# How many do we have? print (len(data), 'ratings') print (100 * (float(len(data)) / (data.userId.nunique() * data.movieId.nunique())), '% of possible ratings')# Number of ratings per users fig = plt.figure(figsize=(10, 10)) ax = plt.hist(data.groupby('userId').apply(lambda x: len(x)).values, bins=50) plt.xlabel("ratings") plt.ylabel("users") plt.title("Number of ratings per user") plt.show()# Number of ratings per movie fig = plt.figure(figsize=(10, 10)) ax = plt.hist(data.groupby('movieId').apply(lambda x: len(x)).values, bins=50) plt.xlabel("ratings") plt.ylabel("movies") plt.title('Number of ratings per movie') plt.show()# Ratings distribution評分分布 fig = plt.figure(figsize=(10, 10)) ax = plt.hist(data.rating.values, bins=5) plt.xlabel("ratings") plt.ylabel("numbers") plt.title("Distribution of ratings") plt.show()# Average rating per user fig = plt.figure(figsize=(10, 10)) ax = plt.hist(data.groupby('userId').rating.mean().values, bins=10) plt.xlabel("Average rating") plt.ylabel("numbers") plt.title("Average rating per user") plt.show()# Average rating per movie fig = plt.figure(figsize=(10, 10)) ax = plt.hist(data.groupby('movieId').rating.mean().values, bins=10) plt.title('Average rating per movie') plt.show()# Top Movies,genres電影類型 average_movie_rating = data.groupby('movieId').mean() top_movies = average_movie_rating.sort_values('rating', ascending=False).head(10) pd.concat([movies.loc[top_movies.index.values],average_movie_rating.loc[top_movies.index.values].rating], axis=1)# Robust Top Movies - Lets weight the average rating by the square root of number of ratings讓平均評分進行加權數的平方根 top_movies = data.groupby('movieId').apply(lambda x:len(x)**0.5 * x.mean()).sort_values('rating', ascending=False).head(10) pd.concat([movies.loc[top_movies.index.values], average_movie_rating.loc[top_movies.index.values].rating], axis=1)controversial_movies = data.groupby('movieId').apply(lambda x:len(x)**0.25 * x.std()).sort_values('rating', ascending=False).head(10) pd.concat([movies.loc[controversial_movies.index.values], average_movie_rating.loc[controversial_movies.index.values].rating], axis=1)?
?
?
相關文章推薦
GitHub
?
?
總結
以上是生活随笔為你收集整理的ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML之RS之CF:基于用户的CF算法—利
- 下一篇: ML之Clustering:关于Clus