diff --git "a/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" "b/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" index 161db6547410fa42758a43a402d6635a60c21933..fa1f113fa2c077da831a20ffc53b13c1ee74d34f 100644 --- "a/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" +++ "b/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" @@ -1,31 +1,44 @@ # 10-学校微课平台推荐功能设计-挑战项目-第二单元 数组、链表与字符串 ### 一、项目主题 + 当用户购买了一件商品后,购物网站会依据该商品的类型或用途给用户推荐相关的商品;当用户打开一个视频后,视频网站平台会依据该视频的主演或导演人员信息给用户推荐相关的视频;当用户借阅某本书籍后,电子图书系统会依据该书籍的内容或作者给用户推荐相关的书籍……这些应用均是使用了推荐系统来完成以上的关联推荐。推荐系统,它是根据用户的信息需求、行为等,将用户感兴趣的信息、产品等推荐给用户的个性化信息推荐系统。 ### 二、项目内容 - #### 1.项目背景 + 学校新建了一个微课平台,用于展示校内教师和学生自制的微课。由于刚刚起步,上传的微课还不是很多,但为了更好地服务师生,考虑增加微课平台的推荐功能,即当某个用户点播了某个微课后,平台会依据一定的规则推荐相关的微课。 #### 2.项目设计依据 + 请查阅“基于内容的推荐算法”的相关文档,根据自己的理解简化算法,开发完成这个微课平台推荐系统。 #### 3.项目概述 + 设计一个学校微课平台推荐系统,通过选择或自定的推荐规则实现推荐功能。 ### 三、项目指导 + 1.根据选择或自定的推荐规则来确定并构建相应的问题模型 + (1)根据某个用户某次点播微课的操作,在点播列表中统计出与该用户类型相同的用户点播次数最多的若干个微课作为推荐对象。 + (2)根据某个用户某次点播微课的操作,在点播列表中统计出与该微课类型相同的所有微课点播次数,将次数最多的若干个微课作为推荐对象。 + (3)自己设计推荐规则。 + 2.依据某个数据来源,结合上述的推荐规则,分析数据的内容结构。 + 3.确定算法和数据结构。 ### 四、项目实施流程 +![输入图片说明](image.png) ### 五、项目实施环节安排 #### 第一阶段:项目准备阶段 1. 确定项目主题 - - 2. 项目需求分析与总体规划 - - +(1)明确项目实施的功能以及项目输入(即处理对象或原始数据)与输出(即处理结果)。 +(2)确定项目在实施过程中可以分成几个阶段完成,明确每个阶段需要完成的任务。 3. 分组、分工 - +建议以3~4人为一组,确定一个组长作为项目负责人,统一协调组内成员各阶段的任务(表格详见附件1:项目小组分工记录表)。 #### 第二阶段:项目的指导阶段 1. 抽象与建模 - - +需要处理的有效数据主要是微课ID、用户类型、微课类型和微课名等,其他可能存在的数据(包括用户ID,点播日期等)属于无效数据。小组成员收集数据后对有效数据进行初步的结构化处理,无效数据可删除。 +设计推荐规则(略) 2. 设计算法 - - +根据建模,将收集到的数据进行结构化后,问题解决需要经历如下几个步骤: +第一步:读取结构化数据; +第二步:对数据进行预处理; +第三步:产生点播记录; +第四步:根据推荐规则和点播记录进行推荐功能; +第五步:输出结果。 3. 项目程序实现 +``` import random from tkinter import * from tkinter import ttk @@ -262,10 +275,36 @@ if __name__ == '__main__' : wk_read() # 导入微课列表 import_data() # 导入历史点播记录 top.mainloop() - - +``` #### 第三阶段:项目汇报阶段 ### 六、项目汇报环节安排 +``` +1.学生制作项目汇报材料。 +(1)展示与分享项目成果。 +(2)对完成项目的感悟,总结项目的实施流程。 +(3)回顾项目实施过程中存在的困难及解决途径。 +2. 教师组织学生对每个小组项目进行评价。(表格详见附件2:项目评价量化表) +``` +附件1:项目小组分工记录表 +| 组内分工 | 组员姓名 | 主要职责 | 联系方式 | +|---------|---------|----------|---------| +| 组长 | | | | +| 组员A | | | | +| 组员B | | | | +| 组员C | | | | + +附件2:项目评价量化表 +| 评价条目 | 说明 | 评分(1~10分) | 评分主要依据阐述 | 后续完善方向 | +|------------|------------------------------|-----------|----------|--------| +| 推荐算法简化 | 简化后的算法容易理解并切实可行 | | | | +| 数据内容结构设计 | 设计的数据内容结构明确,可以满足推荐算法的要求 | | | | +| 数据的模拟 | 模拟数据可以验证推荐算法的正确性,数据量达到基准要求以上 | | | | +| 数据结构的选择 | 选择的数据结构与推荐算法相适应 | | | | +| 程序编写、调试与运行 | 程序调试、运行成功,所得数据符合预期 | | | | + + + + diff --git "a/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/image.png" "b/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/image.png" new file mode 100644 index 0000000000000000000000000000000000000000..a9243a08bb16ae2c6dbf17cfb1078a6d74f0a44c Binary files /dev/null and "b/10-\345\255\246\346\240\241\345\276\256\350\257\276\345\271\263\345\217\260\346\216\250\350\215\220\345\212\237\350\203\275\350\256\276\350\256\241-\346\214\221\346\210\230\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/image.png" differ