基于皮尔逊相关系数的电影智能推荐系统
本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》
# 1.读取数据
import pandas as pd
movies = pd.read_excel('电影.xlsx')
movies.head()score = pd.read_excel('评分.xlsx')
score.head()df = pd.merge(movies, score, on='电影编号') # 通过“电影编号”列关联起来
df.head()df.to_excel('电影推荐系统.xlsx') # 将该汇总表导出为excelprint(df['评分'].value_counts()) # 查看各个评分的出现的次数import matplotlib.pyplot as plt
df['评分'].hist(bins=20) # hist()函数绘制直方图,竖轴为各评分出现的次数
plt.show()
可以看到,评分大多在3~4分之间。运行结果:
# 2.数据分析
ratings = pd.DataFrame(df.groupby('名称')['评分'].mean()) # 计算每部电影的评分均值
print(ratings.sort_values('评分', ascending=False).head()) # 从高到低排序
ratings['评分次数'] = df.groupby('名称')['评分'].count()
print(ratings.sort_values('评分次数', ascending=False).head())
运行结果:
可以看到,这5部电影的评分均值为5分,这可能是因为评分次数较少且普遍评分较高的缘故。
# 3.数据处理
user_movie = df.pivot_table(index='用户编号', columns='名称', values='评分') # 转换为数据透视表
print(user_movie.tail())
print(user_movie.describe()) # 因为数据量较大,这个耗时可能会有1分钟左右
运行结果:
# 4.智能推荐
FG = user_movie['阿甘正传(1994)'] # FG是Forrest Gump(),阿甘英文名称的缩写
pd.DataFrame(FG).head()
corr_FG = user_movie.corrwith(FG)
similarity = pd.DataFrame(corr_FG, columns=['相关系数'])
similarity.head()# 剔除NaN值
similarity.dropna(inplace=True) # 或写成similarity=similarity.dropna()
similarity.head()# 表格合并方法一
similarity_new = pd.merge(similarity, ratings['评分次数'], left_index=True, right_index=True)
similarity_new.head()# 表格合并方法二
similarity_new = similarity.join(ratings['评分次数'])
similarity_new.head()similarity_new[similarity_new['评分次数'] > 20].sort_values(by='相关系数', ascending=False).head() # 选取阈值
运行结果:
基于皮尔逊相关系数的电影智能推荐系统相关推荐
- java智能推荐系统技术_GitHub - newfishwang/mirs: 电影智能推荐系统JAVA实现
项目说明 电影智能推荐系统采用典型的MVC架构.项目使用Java 语言作为后端编程语言,使用MYSQL作为数据库:智能推荐算法采用协同过滤算法,提供的推荐功能包括:视频推荐.好友推荐.圈子推荐等.此项 ...
- java电影推荐系统_GitHub - Lee0509/mirs: 电影智能推荐系统JAVA实现
项目说明 电影智能推荐系统采用典型的MVC架构.项目使用Java 语言作为后端编程语言,使用MYSQL作为数据库:智能推荐算法采用协同过滤算法,提供的推荐功能包括:视频推荐.好友推荐.圈子推荐等.此项 ...
- 推荐系统入门学习(二)【余弦相似度|皮尔逊相关系数】
搭建你的第一个推荐系统 初识推荐系统 最初的推荐系统,作用是过滤垃圾邮件.今日机器学习算法的发展,朴素贝叶斯.神经网络已然成为了过滤垃圾邮件的好手.但是在30年前,算法还没有如今使用得广泛的时候,&q ...
- 【推荐系统案例】基于协同过滤的电影推荐
案例--基于协同过滤的电影推荐 1. 数据集下载 2. 数据集加载 3. 相似度计算 4. User-Based CF 预测评分算法实现 5. Item-Based CF 预测评分算法实现 前面我们已 ...
- 推荐算法-皮尔逊相关系数的相似度
探索相似性度量 基于用的推荐程序的一个重要的部分是用户相似度(UserSimilarity)实现.基于用户的推荐非常依赖这个组件.如果对用户的相似性缺乏可靠有效的定义,这类推荐方法是没有意义的.这也适 ...
- 基于协同过滤的电影评分推荐案例及相关代码
文章目录 案例介绍 数据集加载 相似度计算 备注 User-Based CF 预测评分 评分预测公式 实现评分预测predict 实现预测全部评分predict_all 添加过滤规则预测 根据预测评分 ...
- [附源码]java毕业设计高考志愿智能推荐系统
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 基于用户的协同过滤和皮尔逊相关系数
基于用户的协同过滤和皮尔逊相关系数 2012 年 11 月 05 日 isnowfy algorithm, web frameborder="0" hspace="0&q ...
- 基于Java毕业设计幼儿影视节目智能推荐系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计幼儿影视节目智能推荐系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计幼儿影视节目智能推荐系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构 ...
最新文章
- java基础知识总结1
- 开源作品ThinkJDBC—一行代码搞定数据库操作
- SpringBoot内置Tomcat支持多大并发量和连接数
- 天池 在线编程 回文子串(区间动态规划)
- OCP China Day“登陆”,最新技术、方案吸睛!
- python爬虫实现方式_python爬虫的实现方法
- 快速了解layui中layer的使用
- Ubuntu20.04更新源步骤
- 易学性vs易用性,产品应该选哪边?
- leetcode------Binary Tree Level Order Traversal II
- C#开发微信门户及应用(13)-使用地理位置扩展相关应用
- 将oracle端口1521共享_[转]利用oracle1521端口抓鸡
- 微信整人假红包图片_微信整人假红包 仿真整人红包图片
- Spring Boot入门教程(三十九):微信支付集成-申请服务号和微信支付
- 《西窗法雨》一天读完,怕不怕
- 腹有诗书气自华,新华三交换机大有不同
- XDOS DAS Call WIS NET F6 (HELP)- WIS Is Not Available Solution
- 西安交通大学大学计算机考试题,西安交通大学17年3月课程考试《计算机应用基础》作业考核试题...
- MySQL高级2-优化分析
- c语言赋值运算与除法运算顺序,C语言运算符的优先级和结合律