基于hadoop的电影网站用户性别预测实现程序

本博客介绍了一个基于KNN算法的电影网站用户性别预测项目,在Hadoop平台上的实现细节。项目包括数据预处理、算法流程及源代码分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于knn算法的hadoop的电影网站用户性别预测实现程序,数据预处理阶段打包成jar包在Hadoop上运行即可,数据目录为data,需上传到hadoop运行目录下,只需更改预处理代码文件路径为自己的即可,knn数据计算阶段直接运行即可,需修改为本地目录,由于数据量大,需要运行时间较长。我运行了2个小时。
算法实现流程:
准备数据,对数据进行预处理。
选择合适的数据结构来存储训练数据和测试数据。
设定参数,如k=3。
对于每一个测试对象维护一个大小为k的按距离由小到大的队列,用于存储最近邻训练元组。随机从训练元组中选取k个元组作为初始的最近邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号和距离存入优先级队列。
遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离L与最近邻元组中的最大距离Lmax比较。
若L>=Lmax,则舍弃该元组,遍历下一个元组。若L < Lmax,删除优先级队列中最大距离的元组,将当前训练元组存入最近邻元组。
遍历完毕,计算最近邻元组中k 个元组的多数类,并将其作为测试元组的类别。

knn算法优点:
简单,易于理解,易于实现,无需估计参数,无需训练;

适合对稀有事件进行分类;

特别适合于多分类问题(multi-modal,对象具有多个类别标签), KNN比SVM的表现要好

源代码已上传包含代码和数据,自行下载:
https://download.youkuaiyun.com/download/qq1594443513/10898921

从豆瓣批量获取看过电影用户列表,并应用kNN算法预测用户性别 首先从豆瓣电影的“看过这部电影 的豆瓣成员”页面上来获取较为活跃的豆瓣电影用户。 获取数据 链接分析 这是看过"模仿游戏"的豆瓣成员的网页链接:http://movie.douban.com/subject/10463953/collections。 一页上显示了20名看过这部电影的豆瓣用户。当点击下一页时,当前连接变为:http://movie.douban.com/subject/10463953/collections?start=20。 由此可知,当请求下一页内容时,实际上就是将"start"后的索引增加20。 因此,我们可以设定base_url='http://movie.douban.com/subject/10463953/collections?start=',i=range(0,200,20),在循环中url=base_url+str(i)。 之所以要把i的最大值设为180,是因为后来经过测试,豆瓣只给出看过一部电影的最近200个用户。 读取网页 在访问时我设置了一个HTTP代理,并且为了防止访问频率过快而被豆瓣封ip,每读取一个网页后都会调用time.sleep(5)等待5秒。 在程序运行的时候干别的事情好了。 网页解析 本次使用BeautifulSoup库解析html。 每一个用户信息在html中是这样的: 七月 (银川) 2015-08-23   首先用读取到的html初始化soup=BeautifulSoup(html)。本次需要的信息仅仅是用户id和用户电影主页,因此真正有用的信息在这段代码中: 因此在Python代码中通过td_tags=soup.findAll('td',width='80',valign='top')找到所有的块。 td=td_tags[0],a=td.a就可以得到 通过link=a.get('href')可以得到href属性,也就用户电影主页链接。然后通过字符串查找也就可以得到用户ID了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值