资源简介 (共40张PPT)项目挑战:学校微课平台推荐推荐算法项目情境1PROJECT CONTEXT一、项目情境学校新建了一个微课平台,准备增加微课平台的推荐功能。请设计相应的推荐算法,当用户点播了某微课后,平台会依据一定规则推荐相关的微课。项目分析2PROJECT ANALYSIS二、项目分析1.推荐算法的选择推荐算法基于关联规则推荐基于知识推荐基于协同推荐基于内容推荐基于深度学习推荐基于上下文推荐基于组合推荐基于效用推荐二、项目分析【探究】根据课前查阅的资料,结合项目选择一种推荐算法,并说出选择这种推荐算法的理由及其具体实施过程。1.推荐算法的选择二、项目分析案例:基于内容的推荐算法候选物品特征相似度计算推荐列表生成用户历史数据物品特征向量用户偏好向量物品特征提取用户画像学习二、项目分析案例:基于内容的推荐算法待选微课数据同科目播放量最大的微课前三项微课列表用户点播数据微课特征信息所点微课特征物品特征提取用户画像学习二、项目分析2.项目的实施流程【思考】结合项目任务描述,说一说项目具体的实施流程。请结合已有的一定量的微课点播数据,为微课平台设计推荐算法。当用户点播了某个微课后,平台会依据一定规则推荐相关的微课。项目任务二、项目分析数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法2.项目的实施流程项目实践3PROJECT 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文件Yi=i+1line=该课程信息数据courses中该课程点播数+1j=0jj=j+1Yline==courses[j][:4]?YNN在courses中添加该课程N三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法统计课程信息及点播次数并存储到总课程中读取csv文件中每一条数据按照编号大小输出课程信息开始三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法【思考1】可以采用怎样的方式使得课程按照编号从小到大输出?方法一:根据课程编号进行排序处理(冒泡排序、选择排序、快速排序等),再按照排序后的顺序输出。方法二:依次从当前课程列表中选出编号最小的课程输出后删除该课程,以此类推,直至课程全部输出。方法三:由于课程编号已知,可从头开始遍历课程列表,编号为S001的先输出,再输出S002的课程,以此类推。三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法已知课程序号在S001-S150范围内i=0ii=i+1Yint(courses[i][0][1:])==c Nc=1c<=len(courses)?输出courses[i]c=c+1YNNY三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法统计课程信息及点播次数并存储到总课程中查询所点播课程的各项数据读取csv文件中每一条数据按照编号大小输出课程信息获取用户输入点播的课程编号开始显示所点播的课程三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法点播的课程编号m_coursei=0iNYm_course==courses[i][0]?de_course=courses[i]输出de_coursei=i+1YN三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法统计课程信息及点播次数并存储到总课程中查询所点播课程的各项数据根据用户已点的课程科目查找推荐课程读取csv文件中每一条数据按照编号大小输出课程信息获取用户输入点播的课程编号开始结束显示所点播的课程按照播放次数高低输出推荐课程三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法【思考2】可以采用怎样的方式找出同科目且播放次数最大的三项数据?方法一:先筛选出同项目课程,再按照课程编号进行排序处理,再按照排序后的顺序输出。(如果前期以排序,只需判断是否同科目)方法二:依次从当前课程列表中选出同项目且播放次数最大的课程,输出后删除该课程,以此类推,直至课程全部输出。方法三:设置存储最大三项同科目课程索引值的变量,从头开始遍历课程列表,每一项都与该变量进行对比,并存储到相应位置。三、项目实践3.算法设计数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法三、项目实践4.编程实现【合作探究】结合算法流程,完成算法代码的编写并上机调试。三、项目实践4.编程实现#读取数据,统计课程及其点播次数ofile=open("微课点播数据.csv","r")lines=ofile.read().split("\n")courses=[]for i in range(1,len(lines)):line=lines[i].split(",")[1:]for j in range(len(courses)):if line ==courses[j][:4]:courses[j][4]+=1breakelse:courses.append(linex+[0])#新建该课程,点播次数置0#如果总课程中已有该课程,点播次数+1#[“课程编号”,“课程科目","课程类型","课程名称","点播次数"]#读入点播记录文件三、项目实践4.编程实现#按照编号依次呈现课程信息c=1while c <=len(courses):for i in range(len(courses)):if int(courses[i][0][1:])==c:print(courses[i])c=c+1break#按照c的大小依次输出S001-S150的课程信息三、项目实践4.编程实现#获取用户点播内容并查询显示m_course=input("请输入要点播的课程号(S001-S150):")for i in range(len(course)):if m_course==course[i][0]:de_course=course[i]print("您点播的课程为:",de_course)breakelse:print("未找到该课程")三、项目实践4.编程实现#按照本科目点播最多次数进行推荐courses.append(["编号","科目","类型","名称",0])n=len(courses);maxi=[n-1,n-1,n-1]for i in range(n-2):if courses[i][1]==de_course[1] and courses[i][3]!=de_course[3]:if courses[i][4]>courses[maxi[0]][4]:maxi[1:]=maxi[0:2]; maxi[0]=ielif courses[i][4]>courses[maxi[1]][4]:maxi[2]=maxi[1]; maxi[1]=ielif courses[i][4]>courses[maxi[2]][4]:maxi[2]=ifor i in range(3):print(courses[maxi[i]])#如果比当前记载的最大的课程点播数更高#如果点播数小于索引1但大于索引2#如果点播数小于索引1和索引2但大于索引3#同科目且不等三、项目实践数据获取数据查询数据推荐数据呈现组织数据处理数据推荐算法项目总结4PROJECT SUMMARY四、项目总结依据实情选择算法010203合理组织数据。提升算法的时间效率与空间效率判断推荐算法的合理性与可行性结合数据规模、数据的操作需求优化思维方式四、项目总结部分微课的详细点播记录如下,从中该如何基于用户点播数据进行微课推荐?拓展思考 展开更多...... 收起↑ 资源预览