推荐系统导论笔记(三)——Assignment 1
来源:互联网 发布:淘宝电子商务运营 编辑:程序博客网 时间:2024/05/21 21:48
数据描述
给定一个
问题描述
本次作业任务是利用不同种的算法计算电影的评分,并按照评分输出电影的排序,具体评分算法包括:
- 用户评分均值
- 4星及以上评分所占比例
- 评分数
- 与电影Star War相关联程度
问题分析与编码
问题分析
问题中涉及到的算法都不是很复杂,值得一提的是第四个评价标准,官方给出的解决方案是利用
此外,在编码时,还应考虑投票缺失的情况。
具体编码实现
Problem.py
该文件定义了一个Problem类,用于实现上述四种评价算法,其主要方法实现如下:
#评价算法1:用户评分均值def meanRating(self): result=[] #遍历评分矩阵的每一行,在读入数据时已经对数据做了转置,因此现在一行为一个电影的评分 for rating in self.ratings: validRating=0 #有效的评分个数 ratingSum=0 for numOfStar in rating: if numOfStar>-1: #如果评分有效,即没有缺失 validRating=validRating+1 #自增 ratingSum=ratingSum+numOfStar #累加 result.append(float(ratingSum)/validRating)#追加到结果中 return result #评分算法2:4星及以上评分所占比例 def highRating(self): result=[] #遍历评分矩阵的每一行 for rating in self.ratings: validRating=0 numHighRating=0 for numOfStar in rating:#遍历评分 if numOfStar>-1: #如果评分有效 validRating=validRating+1#有效评分数自增 if numOfStar>=4: #如果大于4星 numHighRating=numHighRating+1 #高评分变量自增 result.append(float(numHighRating)/validRating)#追加到结果中 return result#评价算法3:有效评分个数 def ratingCount(self): result=[] #遍历评分矩阵的每一行 for rating in self.ratings: result.append(len([i for i in rating if i>-1])) #追加结果 return result #计算相似度,使用|X and Y|/|X|方式; #movieName:要计算相似度电影的名称 def calcRelevance(self,movieName): index=-1 position=0 #首先找到该电影名称对应的下标 for name in self.moviesName: if name==movieName: index=position break position=position+1 if index==-1: return -1 #再计算各个电影与其相似度 relevance=[] #step1:计算给该电影投票的用户下标,即X集合 validRating=[i for i in range(0,len(self.ratings[index])) if self.ratings[index][i]>-1] #遍历评分矩阵的每一行 for rating in self.ratings: relevantCount=0 for i in validRating: if rating[i]>-1: # 计算|X and Y| relevantCount=relevantCount+1 relevance.append(float(relevantCount)/len(validRating))#将|X and Y|/|X|结果存入列表 return relevance
代码Github地址:Github地址
0 0
- 推荐系统导论笔记(三)——Assignment 1
- 推荐系统导论笔记(五)——Assignment 2
- 推荐系统导论笔记(六)——Assignment3
- 推荐系统导论笔记(一)
- 推荐系统导论笔记(二)
- 推荐系统导论笔记(四)
- 推荐系统导论笔记(六)
- 推荐系统导论笔记(七)
- 明大推荐系统导论笔记 week 1
- 推荐系统学习笔记(三)
- 算法导论笔记(三)
- 推荐系统(三)
- 明大推荐系统导论笔记 week 2
- 推荐系统(1)——推荐系统概述
- 推荐系统学习(三)——聚类算法
- 推荐系统(1)—推荐系统评测
- 推荐系统笔记三、基于近邻的推荐系统(进阶篇)
- 推荐系统笔记三、基于近邻的推荐系统(进阶篇)
- python 字典
- Error: Can't connect to MySQL server on 'localhost' (10061) Errno.: 2003
- UITableView缓存池 重用
- 关于iOS中git和github的使用
- 《三分》hdoj acm 4.1.6 三分两次
- 推荐系统导论笔记(三)——Assignment 1
- UVA 10731Test (scc)
- 《二分》hdoj acm 4.1.5
- Request 分别获取具有相同 name 属性表单元素值—— 怀念 Classic ASP (转自博客园)
- 2015年11月12日
- struts2整合CKEditor和CKFinder实现上传
- Hue功能总结
- 探索出的一条适合自己的opencv配置之路
- YARN和HDFS的调用方式汇总