首页 > Python资料 博客日记
python协同过滤算法实现电影推荐(附源码)
2024-03-04 04:00:05Python资料围观282次
这篇文章介绍了python协同过滤算法实现电影推荐(附源码),分享给大家做个参考,收藏Python资料网收获更多编程知识
数据集请点赞收藏关注后评论区留言并且私信博主要
本例中使用得是著名得电影数据集MovieLens-100数据集
MoviesLens数据集是实现和测试电影推荐最常用得数据集之一,包含943个用户为精选得1682部电影给出得100000个电影评分
主要文件如下1:u.data 2:u.item 3:u.user
1:查看用户/电影排名信息得代码如下
import pandas as pd
heads=['user_id','item_id','rating','timestamp']
ratings=pd.read_csv(r'u.data',sep='\t',names=heads)
print(ratings)
print("用户数量",len(ratings))
2:查看导入的电影数据表
代码如下
import pandas as pd
u_cols=['user_id','age','sex','occupation','zip_code']
users=pd.read_csv(r'u.data',sep='|',names=u_cols,encoding='latin-1')
print(users)
r_cols=['user_id','movie_id','rating','unix_timestamp']
ratings=pd.read_csv(r'u.data',sep='\t',names=r_cols,encoding='latin-1')
print(ratings)
m_cols=['movie_id','title','release_data','video_release_data','imdb_url']
movies=pd.read_csv(r'u.item',sep='|',names=m_cols,usecols=range(5),encoding='latin-1')
print(movies)
3:用协同过滤推荐算法进行电影推荐
误差评估如下
全部代码如下
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import pairwise_distances
np.set_printoptions(suppress=True) # 取消科学计数法输出
pd.set_option('display.max_rows', None) # 展示所有行
pd.set_option('display.max_columns', None) # 展示所有列
def predict(scoredata,similarity,type='user'):
#基于物品得推荐
if type=='item':
predt_mat=scoredata.dot(similarity)/np.array([np.abs(similarity).sum(axis=1)])
elif type=='user':
#计算用户评分值 减少用户评分高低习惯影响
user_meanscorse=scoredata.mean(axis=1)
score_diff=(scoredata-user_meanscorse.reshape(-1,1))
predt_mat=user_meanscorse.reshape(-1,1)+similarity.dot(score_diff)/np.array([np.abs(similarity).sum(axis=1)]).T
return predt_mat
#读取数据
print('step 1 读取数据')
r_cols=['user_id','movie_id','rating','unix_timestamp']
scoredata=pd.read_csv(r'u.data',sep='\t',names=r_cols,encoding='latin-1')
print('数据形状',scoredata.shape)
#生成用户-物品评分矩阵
print('step2 生成 用户物品评分矩阵')
n_users=943
n_items=1682
data_matrix=np.zeros((n_users,n_items))
for line in range(np.shape(scoredata)[0]):
row=scoredata['user_id'][line]-1
col=scoredata['movie_id'][line]-1
score=scoredata['rating'][line]
data_matrix[row,col]=score
print('用户物品矩阵形状',data_matrix.shape)
#计算相似度
print('step3 计算相似度')
user_similaritry=pairwise_distances(data_matrix,metric='cosine')
item_similarity=pairwise_distances(data_matrix.T,metric='cosine')
print('user similarity',user_similaritry.shape)
print('item similartity',item_similarity.shape)
#进行相似度进行预测
print('step4 预测')
user_prediction=predict(data_matrix,user_similaritry,type='user')
item_perdiction=predict(data_matrix,item_similarity,type='item')
#显示推荐结果
print('step 5 显示推荐结果')
print('----------------')
print('ubcf预测形状',user_prediction.shape)
print('real answer\n',data_matrix[:5,5])
print('预测结果\n',user_prediction)
print('ibcf预测形状',item_perdiction.shape)
print('real answer\n',data_matrix[:5,:5])
print('预测结果\n',item_perdiction)
#性能评估
print('step 6 性能评估')
from sklearn.metrics import mean_squared_error
from math import sqrt
def rmse(predct,realNum):
predct=predct[realNum.nonzero()].flatten()
realNum=realNum[realNum.nonzero()].flatten()
return sqrt(mean_squared_error(predct,realNum))
print('u-base mse=',str(rmse(user_prediction,data_matrix)))
print('m-based mse=',str(rmse(item_perdiction,data_matrix)))
数据集请点赞收藏关注后私信博主要
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 华为OD机试E卷 --最左侧冗余覆盖子串--24年OD统一考试(Java & JS & Python & C & C++)
- python graphviz 中文乱码
- 华为OD机试E卷 --贪心歌手--24年OD统一考试(Java & JS & Python & C & C++)
- 【Python】装饰器、正则表达式
- Python 代码中的 yield 到底是什么鬼?
- Python笔记——20+个小而精的Python实战案例(附源码和数据)
- 华为OD机试E卷 --热点网站统计--24年OD统一考试(Java & JS & Python & C & C++)
- Python毕业设计选题:基于python的酒店推荐系统_django+hadoop
- Python | TypeError: ‘NoneType’ object is not iterable
- python内置模块typing里Literal函数的基本用法和总结--快速学习掌握Literal函数的用法
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程