ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)

简介: ML之RS:基于用户的CF+LFM实现的推荐系统(基于相关度较高的用户实现电影推荐)

输出结果


image.png

image.png

image.png

image.png

image.png










实现代码


#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)



相关文章
|
移动开发 搜索推荐 算法
Python基于Django的电影推荐系统和论坛项目完整源码
Python基于Django的电影推荐系统和论坛项目完整源码
1056 0
Python基于Django的电影推荐系统和论坛项目完整源码
|
7月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
148 1
|
3月前
|
搜索推荐 关系型数据库 数据库
#646253#基于django/neo4j的电影打分推荐系统
#646253#基于django/neo4j的电影打分推荐系统
29 0
|
7月前
|
搜索推荐 算法 Java
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
59 0
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
62 0
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
|
8月前
|
搜索推荐 算法 Java
电影推荐|基于SSM+vue的电影推荐系统的设计与实现(源码+数据库+文档)
电影推荐|基于SSM+vue的电影推荐系统的设计与实现(源码+数据库+文档)
171 3
|
7月前
|
机器学习/深度学习 搜索推荐 算法
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
|
8月前
|
机器学习/深度学习 数据采集 算法
基于Apriori关联规则的电影推荐系统(附python代码)
这是一个基于Apriori算法的电影推荐系统概览。系统通过挖掘用户评分数据来发现关联规则,例如用户观看某部电影后可能感兴趣的其他电影。算法核心是逐层生成频繁项集并设定最小支持度阈值,之后计算规则的置信度。案例中展示了数据预处理、频繁项集生成以及规则提取的过程,具体包括用户评分电影的统计分析,如1-5部电影的评分组合。最后,通过Python代码展示了Apriori算法的实现,生成推荐规则,并给出了一个简单的推荐示例。整个过程旨在提高推荐的精准度,基于用户已评分的电影推测他们可能尚未评分但可能喜欢的电影。
基于Apriori关联规则的电影推荐系统(附python代码)

热门文章

最新文章