ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)
生活随笔
收集整理的這篇文章主要介紹了
ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ML之RS:基于用戶的CF+LFM實現(xiàn)的推薦系統(tǒng)(基于相關(guān)度較高的用戶實現(xiàn)電影推薦)
?
目錄
輸出結(jié)果
實現(xiàn)代碼
?
?
?
輸出結(jié)果
?
?
實現(xiàn)代碼
#ML之RS:基于CF和LFM實現(xiàn)的推薦系統(tǒng) 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、導(dǎo)入數(shù)據(jù)集 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、觀察數(shù)據(jù)集 # 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讓平均評分進(jìn)行加權(quán)數(shù)的平方根 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)?
?
?
相關(guān)文章推薦
GitHub
?
?
總結(jié)
以上是生活随笔為你收集整理的ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML之RS之CF:基于用户的CF算法—利
- 下一篇: ML之Clustering:关于Clus