基于用户喜爱生成推荐电影

目录

  • 基于用户喜爱生成推荐电影
    • 集合说明
    • 代码描述
    • 代码
    • 总结

集合说明

用户集:该集合是通过代码生成
电影集:kaggle.com上面的数据集,filmtv_movies - ENG.csv

该推荐代码主要通过pandas处理,学会灵活运用Dataframe是处理csv文件的关键


代码描述

用户名随机生成,用户数据随机生成user列表[‘name’,‘sex’,‘age’,‘movie…’]
先生成用户集,然后通过用户观看的电影进行分析,得出通过相同类型高分电影推荐,可扩展相同演员,导演等喜爱因素,然后区分用户年龄层,用户性别等因素再进行分析。


代码

import datetime
import random
import pandas as pd#数据预处理
film_url = "filmtv_movies - ENG.csv"
df = pd.read_csv(film_url, usecols=[i for i in range(0, 10)])
df = df.dropna(how="any")# 随机生成用户名
def random_name():# 删减部分,比较大众化姓氏firstName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余元卜顾孟平" \"黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞熊纪舒屈项祝董粱杜阮席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸左石崔吉" \"龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴松井富乌焦巴弓牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步都耿满弘国文东殴沃曾关红游盖益桓公晋楚闫"# 百家姓中双姓氏firstName2 = "万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文长孙慕容鲜于闾丘司徒司空亓官司寇仉督子颛孙端木巫马公西漆雕乐正壤驷公" \"良拓跋夹谷宰父谷梁段干百里东郭南门呼延羊舌微生梁丘左丘东门西门南宫南宫 "# 女孩名字girl = '秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪' \'荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽'# 男孩名字boy = '伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰' \'朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘'# 名name = '中笑贝凯歌易仁器义礼智信友上都卡被好无九加电金马钰玉忠孝'# 10%的机遇生成双数姓氏if random.choice(range(100)) > 10:firstName_name = firstName[random.choice(range(len(firstName)))]else:i = random.choice(range(len(firstName2)))firstName_name = firstName2[i:i + 2]# 生成年龄(18,60)age = random.choice(range(18, 61))# 生成性别sex = random.choice(range(2))name_1 = ""# 生成并返回一个名字if sex > 0:girl_name = girl[random.choice(range(len(girl)))]if random.choice(range(2)) > 0:name_1 = name[random.choice(range(len(name)))]return firstName_name + name_1 + girl_name + ",女," + str(age)else:boy_name = boy[random.choice(range(len(boy)))]if random.choice(range(2)) > 0:name_1 = name[random.choice(range(len(name)))]return firstName_name + name_1 + boy_name + ",男," + str(age)# 用户喜爱电影生成
def random_movie():# 上限10个电影movie = ""ran = random.randint(2, 10)for i in range(1, ran):# print("shape:"+str(df["title"].shape))dfm = df["title"].reset_index(drop=True)movie += dfm[random.randint(0, df["title"].shape[0] - 1)]if i != ran - 1:movie += ","return movie# 用户数据生成 随机
def date_user_creation():username = random_name()user_movie = random_movie()user = username + "," + user_movie# 分隔为列表user = user.split(",", -1)print("user:\n" + str(user))return user# 根据用户喜爱电影推荐(该函数只实现了通过相同类型高分电影推荐,可扩展相同演员,导演等喜爱因素)
def according_to_preference(user):# 首先根据电影类型筛选user_movies = user[3:]user_movies_genre = set()for i in range(len(user_movies)):dfg = df[df["title"] == user_movies[i]]["genre"]dfg = pd.Series(dfg.values)for j in dfg:user_movies_genre.add(j)user_movies_genre = list(user_movies_genre)prefer_movie = pd.read_csv(film_url, nrows=0, usecols=[i for i in range(0, 10)])for item in user_movies_genre:prefer_movie = pd.concat([prefer_movie, df[df["genre"] == item]])prefer_movie = prefer_movie.sort_index()# 其次用年龄进一步拟合younger = datetime.date.today().year - 30older = datetime.date.today().year - 50age = int(user[2])# 自行设置喜爱规则,年轻人看年轻电影,老人不看年轻电影,中年人不看老电影if datetime.date.today().year - age > younger:prefer_movie = prefer_movie[prefer_movie["year"] > younger]elif datetime.date.today().year - age < older:prefer_movie = prefer_movie[prefer_movie["year"] < younger]else:prefer_movie = prefer_movie[prefer_movie["year"] > older]# 在这些电影名中挑选评分人数多的并且评分高的电影加入到一个大电影列表list中prefer_movie = prefer_movie[prefer_movie["avg_vote"] > 8.0]prefer_movie = prefer_movie[prefer_movie["votes"] > 50]# 最后在这些所有的推荐电影中,随机抽调与用户电影相同数量的电影量prefer_movie = prefer_movie.reset_index(drop=True)recommend_movie = set()while prefer_movie.shape[0] > 0:if len(recommend_movie) <= 5:ran = random.randint(0, prefer_movie.shape[0] - 1)recommend_movie.add(prefer_movie["title"][ran])else:break# 推荐电影不能包含用户已观看电影recommend_movie = list(recommend_movie - set(user_movies))print("recommend_movie:\n" + str(recommend_movie))# 调用
if __name__ == '__main__':use = date_user_creation()according_to_preference(use)
# 用户采用的代码随机生成,电影数据采用.csv文件

总结

以上就是今天要讲的内容,本文仅仅简单使用了pandas以及介绍如何实现给用户推荐电影,有许多地方还可以改进

文章引用用户名生成代码链接 :点击此处
鸣谢作者 :heaven&earth

基于用户喜爱生成推荐电影相关推荐

  1. 论文阅读:基于用户上网数据的电影个性化推荐系统研究

    基于用户上网数据的电影个性化推荐系统研究 赵鹏程,黄韬* *(北京邮电大学信 工程学院,北京 100876) 摘要:本文讲述了如何构建出完整电影知识图谱的方法,同时提出了一套发掘电影系列的实现算法.基 ...

  2. ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)

    ML之RS之CF:基于用户的CF算法-利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分) 目录 输出结果 实现代码 输出结果 先看推荐结果显 ...

  3. php调用mahout包,mahout实现基于用户的Mahout推荐程序

    /* * 这里做的是一个基于用户的Mahout推荐程序 * 这里利用已经准备好的数据. * */ package byuser; import java.io.File; import java.io ...

  4. 基于用户的音乐推荐平台

    中国石油大学(北京)现代远程教育 毕 业 设 计(论文) 基于用户的音乐推荐平台 姓    名: 学    号: 性    别:

  5. Python基于用户协同过滤算法电影推荐的一个小改进

    之前曾经推送过这个问题的一个实现,详见:Python基于用户协同过滤算法的电影推荐代码demo 在当时的代码中没有考虑一种情况,如果选出来的最相似用户和待测用户完全一样,就没法推荐电影了.所以,在实际 ...

  6. 【2】基于用户行为的推荐方法

    0.写在前面 基于用户行为数据的应用其实早在个性化推荐系统诞生之前就已经在互联网上非常流行了,其中最典型的就是各种各样的排行榜.这些排行榜包括热门排行榜和趋势排行榜等.尽管这些排行榜应用仅仅基友简单的 ...

  7. 推荐系统 --- 推荐算法 --- 基于用户行为的推荐算法 - 协同过滤算法

    概述 历史 1992年,Goldberg.Nicols.Oki及Terry提出 基本思想 爱好相似的用户喜欢的东西可能也会喜欢 优点 共享朋友的经验,提高推荐的准确度 根据爱好相似的用户喜欢的视频进行 ...

  8. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

  9. 基于欧几里德距离的推荐功能实现思路(向量空间)

      今天下午我和内助看了YouTube电影速看,一部2小时的电影用9分钟就能看完,影片播放完毕自动推荐的速看电影,真的很合我们的口味,如此智能的一个功能,究竟是如何实现的呢? 接下来,我就简单介绍两种 ...

最新文章

  1. php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...
  2. 局部页面切换url为什么不变_python爬虫 - 翻页url不变网页的爬虫探究
  3. Java基于springMVC的验证码案例
  4. Java中获取完整的url
  5. 申请评分卡(A卡)的开发过程(1)
  6. JavaScript 之 JS重载
  7. OpenLDAP 2.4.44 安装 + phpLDAPadmin 安装
  8. 输入广义表建立子女兄弟链表示的树
  9. mac下HTTP与HTTPS抓包
  10. educoder Scala面向对象编程
  11. TortoiseGit安装配置详解同时支持github,gitee,gitlab
  12. c++小游戏 走迷宫
  13. 用dxdiag命令show计算机系统配置
  14. sklearn实现决策树,随机森林,逻辑回归,KNN,贝叶斯,SVM,以葡萄干数据集为例
  15. lammps和atomsk中常用的建模方法
  16. 地磁系统精确感应车位状态
  17. 微软发布6月份安全更新程序补丁(For Windows xp/2003/2000/vista和Office 2003/2007所有更新产品补丁)
  18. Zencart的首页php 301,zencart网店系统301重定向
  19. 絮叨絮叨看护机房之监控
  20. 将office 的文件,word,xlsx,ppt,txt 转成pdf 供预览

热门文章

  1. 中式家居之美,精致到骨子里
  2. java判断cookie是否过期_Cookie的使用(判断登录时间)
  3. Python随笔:对 txt 文件进行读写,清除,删除操作
  4. 如何在deepin中安装nodejs
  5. Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作
  6. 大数据在天猫产品上的应用
  7. 微机原理-8255A-八人抢答器实验
  8. 主题:含热电联供的智能楼宇群协同能量管理
  9. php实现删除数据库中内容,php – 从数据库中删除内容,安全预防措施
  10. 请教:我该给初学者怎样的意见?