python协同过滤算法实现电影推荐(附源码)

简介: python协同过滤算法实现电影推荐(附源码)

本例中使用得是著名得电影数据集MovieLens-100数据集


MoviesLens数据集是实现和测试电影推荐最常用得数据集之一,包含943个用户为精选得1682部电影给出得100000个电影评分


主要文件如下1:u.data 2:u.item 3:u.user


1:查看用户/电影排名信息得代码如下

1666430464259.jpg

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:查看导入的电影数据表


1666430426828.jpg

代码如下

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:用协同过滤推荐算法进行电影推荐

image.png

image.png

image.png

误差评估如下

1666430336844.jpg

全部代码如下:

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)))
相关文章
|
9月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
10月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
443 26
|
9月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
242 5
|
10月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1515 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
10月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
10月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
10月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
406 0
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
753 0

热门文章

最新文章

推荐镜像

更多