内容正文:
项目挑战:学校微课平台推荐
推荐算法
项目情境
1
PROJECT CONTEXT
一、项目情境
学校新建了一个微课平台,准备增加微课平台的推荐功能。请设计相应的推荐算法,当用户点播了某微课后,平台会依据一定规则推荐相关的微课。
项目分析
2
PROJECT ANALYSIS
二、项目分析
1.推荐算法的选择
推荐算法
基于关联规则推荐
基于知识推荐
基于协同推荐
基于内容推荐
基于深度学习推荐
基于上下文推荐
基于组合推荐
基于效用推荐
二、项目分析
【探究】根据课前查阅的资料,结合项目选择一种推荐算法,并说出选择这种推荐算法的理由及其具体实施过程。
1.推荐算法的选择
二、项目分析
案例:基于内容的推荐算法
候选物品特征
相似度计算
推荐列表生成
用户历史数据
物品特征向量
用户偏好向量
物品特征提取
用户画像学习
二、项目分析
案例:基于内容的推荐算法
待选微课数据
同科目播放量最大的微课
前三项微课列表
用户点播数据
微课特征信息
所点微课特征
物品特征提取
用户画像学习
二、项目分析
2.项目的实施流程
【思考】结合项目任务描述,说一说项目具体的实施流程。
请结合已有的一定量的微课点播数据,为微课平台设计推荐算法。当用户点播了某个微课后,平台会依据一定规则推荐相关的微课。
项目任务
二、项目分析
数据获取
数据查询
数据推荐
数据呈现
组织数据
处理数据
推荐算法
2.项目的实施流程
项目实践
3
PROJECT PRACTICE
三、项目实践
微课名称
微课类型
主讲教师
课程评价
开课时间
学习时长
……
1.数据的组织与存储
三、项目实践
数组
链表
数据存储
数据查询
数据推荐
1.数据的组织与存储
索引访问便捷
存储空间固定
插入、删除便捷
占用空间不固定
【思考】结合项目实施过程与所选推荐算法,可以采用哪种结构存储和组织数据?
三、项目实践
1.数据的组织与存储
微课点播数据.csv
课程编号
课程科目
课程类型
课程名称
点播序号
【已知】课程序号在S001-S150范围内,共48504条数据
三、项目实践
2. 抽象与建模
【探究】在算法实现过程中,需要用到哪些变量,其结构形式是怎样的?与其他变量间又有什么联系?
存储内容 变量名 类型 格式 与其他变量的关系
三、项目实践
2. 抽象与建模
列表模拟一维数组
形式:[课程编号,课程科目,课程类型,课程名称]
line=['S145', '信息技术', '职业技能', '电子相册制作']
(1)点播文件数据
格式
案例
变量名
line
变量关系
获取csv文件信息
文件行数据line
读取每一行数据
三、项目实践
2. 抽象与建模
列表模拟二维数组
形式:[[课程编号,课程科目,课程类型,课程名称,点播次数],……]
courses=[['S145', '信息技术', '职业技能', '电子相册制作', 567],
['S126', '通识', '兴趣特长', '围棋入门', 366], ……]
(2)存储总课程信息
courses
格式
案例
变量名
变量关系
遍历每一行数据
如果在总课程中
该课程点播次数+1
如果不在总课程中
新建该课程,点播次数为0
三、项目实践
2. 抽象与建模
字符串
m_course=“S012”
(3)用户查询的课程编号
m_course
格式
案例
变量名
变量关系
遍历总课程数据
如果在总课程中
输出该课程的相关信息
如果不在总课程中
输出“无法查找到该课程”
三、项目实践
2. 抽象与建模
列表模拟一维数组
形式:[点播次数最多的索引,点播次数第2的索引,点播次数第3的索引]
maxi=[4,2,1]
(4)点播次数最多的三项同科目数据
maxi
格式
案例
变量名
变量关系
遍历总课程
同科目且
播放次数最多
保存索引到maxi[0]并更改maxi[1:3]
播放次数第2多
保存索引到maxi[1]并更改maxi[2]
播放次数第3多
保存索引到maxi[2]
三、项目实践
3.算法设计
1.请结合项目实施过程以及已设定的变量,合理设计算法并选择一种方式呈现。
【探究】
2.尝试一题多解,选择最优算法描述过程。
三、项目实践
3.算法设计
数据获取
数据查询
数据推荐
数据呈现
组织数据
处理数据
推荐算法
统计课程信息及点播次数并存储到总课程中
读取csv文件中每一条数据
开始
i=0;course=[]
i<csv文件长度?
读取csv文件
Y
i=i+1
line=该课程信息数据
courses中该课程点播数+1
j=0
j<len(courses)?
j=j+1
Y
line==courses[j][:4]?