1判断题
职业道德的核心(如爱岗敬业、诚实守信)是在社会生产的长期实践中形成的,具有稳定的传承性。因此,在面对人工智能等新技术带来的全新伦理挑战时,这些核心原则的内涵和实践要求无需与时俱进,只需坚持其传统定义即可。()
查看参考答案与解析
参考答案:错误
职业道德的核心价值具有传承性,但落实方式需随技术和社会变化更新。例如 AI 场景需要落实数据授权、公平性和可追溯性。
人工智能训练师 · 二级备考
83 道理论题与解析 · 6 个实践参考方案 · 非官方答案
资料总览
资料来源:2025 年上海市专项职业技能大赛“人工智能训练师”项目,2025 年 9 月。当前目录用于人工智能训练师二级备考,具体考试要求请以实际通知为准。
本阅读版保留完整原题与附件,并新增全部 83 题参考答案与解析、6 个实践模块的参考方案,以及已运行的 B1.2、B2 参考代码。
附件没有官方标准答案。本页新增内容均为非官方参考答案;点击每题下方可展开。表述有歧义的题目已说明判断依据。方案中的目标阈值为示例,只有标注“运行结果”的数值来自实际计算。法律题附官方来源,核对日期为 2026 年 10 月 4 日。
| 模块 | 时间 | 模块满分 | 总成绩比重 |
|---|---|---|---|
| A 理论知识 | 90 分钟 | 100 分 | 30% |
| B 技能操作 | 120 分钟 | 100 分 | 50% |
| C 综合评审 | 30 分钟 | 100 分 | 20% |
| 合计 | 240 分钟 | 300 分 | 100% |
| 模块 | 题型/内容 | 分值 |
|---|---|---|
| A | 判断题 | 10 |
| A | 单选题 | 40 |
| A | 多选题 | 10 |
| A | 简答题 | 40 |
| B | 业务分析 | 25 |
| B | 智能训练 | 30 |
| B | 智能系统设计 | 40 |
| B | 培训与指导 | 5 |
| C | 产品功能设计以及实现 | 100 |
先熟悉评分与交付要求,再阅读理论题。实操按照 B1.1、B1.2、B2、B3、B4 顺序练习,最后进行 C 综合评审限时训练。
A · 90 分钟 · 30%
共 83 题:判断题 14 题、单选题 55 题、多选题 8 题、简答题 6 题。先作答,再展开每题下方的“参考答案与解析”核对。答案为非官方整理,原题和选项保留。
职业道德、数据授权、算法公平性、劳动与知识产权。
流程管理、KPI、用户增长、竞品分析、需求与产品生命周期。
PCA、反向传播、正则化、交叉验证、损失函数、集成学习。
WBS、关键路径、敏捷方法、风险管理、培训计划与效果评估。
A · 14 题
职业道德的核心(如爱岗敬业、诚实守信)是在社会生产的长期实践中形成的,具有稳定的传承性。因此,在面对人工智能等新技术带来的全新伦理挑战时,这些核心原则的内涵和实践要求无需与时俱进,只需坚持其传统定义即可。()
参考答案:错误
职业道德的核心价值具有传承性,但落实方式需随技术和社会变化更新。例如 AI 场景需要落实数据授权、公平性和可追溯性。
为提升模型泛化能力,人工智能训练师将收集到的用户数据集进行去标识化处理(例如, 将姓名、手机号等直接身份信息替换为唯一的内部ID)。由于处理后的数据无法直接识别到个人,因此可以直接用于公司一项全新的、与用户原始授权目的无关的商业智能分析项目中。()
参考答案:错误
去标识化不等于匿名化,仍可能借助额外信息识别个人。不能据此任意改变用途;以同意为依据时,处理目的、方式等变更需重新取得同意,也要核对其他合法处理依据。
在模型训练中,如果一个团队使用了业界公认的、在算法层面能够减轻偏见的公平性算法,那么即使训练数据本身存在源于真实世界的历史性偏见(如性别、地域歧视),训练师也可以认为其在职业道德上已经尽到了核心责任来确保模型的公平性。()
参考答案:错误
公平性算法不能自动消除数据中的历史偏见。还需检查采样、标注、分群性能及上线后的差异,并持续纠偏。
对职业守则执行情况的监督,其目的不仅在于发现和惩处违规行为,更重要的是通过监督机制进行警示教育和风险预警,从而引导从业人员自觉遵守,从源头上预防违规行为的发生。()
参考答案:正确
监督兼有纠错、警示教育和风险预防功能,应形成反馈与改进机制。
在人工智能等技术密集型行业中,“爱岗敬业”不仅体现在对本职工作的热情和责任心上, 更要求从业者保持终身学习的态度,持续更新知识储备和技术技能,以适应行业的高速发展。()
参考答案:正确
技术密集行业的爱岗敬业包含持续学习,以保持岗位胜任能力。
在进行同比(Year-over-Year)分析时,如果发现本月销售额相较于去年同月显著增长, 那么就可以直接得出结论,认为这是本月营销策略成功的唯一成果。()
参考答案:错误
同比增长是相关现象,不能单独证明营销因果;还可能受价格、季节、渠道、市场和基数影响,需控制变量或开展实验。
在客户关系管理中应用“二八法则”(帕累托法则),其核心思想是识别出能为企业贡献约80%利润的那20%的关键客户,并为他们投入更多的资源和提供更优质的服务,以实现企业效益的最大化。()
参考答案:正确
二八法则用于识别高价值客户并优化资源投入;80/20 是经验规律,不保证每个企业都精确符合。
主成分分析(PCA)作为一种经典的降维方法,其核心原理是从原始的高维特征中,直接挑选出方差最大、对结果贡献最重要的若干个原始特征作为新的特征集。()
参考答案:错误
PCA 构造原始特征的线性组合,以正交主成分保留较多方差;直接挑选原始字段属于特征选择。
在深度学习中,用于训练神经网络的反向传播算法(Backpropagation),其数学基础正是微积分中的链式法则,它能够高效地计算损失函数对于网络中每一个参数的梯度。()
参考答案:正确
反向传播运用链式法则,把输出端的损失梯度逐层传回各参数。
在机器学习中,L2 正则化(又称岭回归)通过在损失函数中添加参数的平方和项,其主要作用是使模型的权重参数变得稀疏,即让许多参数值精确地变为零。()
参考答案:错误
L2 通常使权重平滑收缩,不以产生精确零权重为主要作用;L1 更容易得到稀疏解。在线性回归中使用 L2 惩罚对应岭回归。
K-折交叉验证(K-Fold Cross-Validation)通过将原始数据集分成K 个子集,轮流将其中一个子集作为验证集,其余K-1 个子集作为训练集,并重复K 次,最终通过平均K 次验证结果来获得对模型泛化能力的更稳定和可靠的评估。()
参考答案:正确
普通 K 折以轮换验证并汇总指标减少单次划分的偶然性。时序或分组数据应采用相应划分,预处理也必须只在训练折拟合。
算法的时间复杂度(如O(n)、O(n²))是用来精确计算一个算法在特定输入规模下,在计算机上运行所需要的秒数的度量。()
参考答案:错误
时间复杂度描述运行工作量随输入规模增长的渐近规律;实际秒数还取决于硬件、实现和数据。
批标准化(Batch Normalization)通过在神经网络的每一层激活函数之前,对该层的输入数据进行归一化处理,其主要作用是缓解内部协变量偏移(Internal Covariate Shift) 问题,从而加速模型收敛并提高训练稳定性。()
参考答案:正确(按常见教材表述;题干有简化)
BN 常被讲解为在激活前标准化批次输入并加速训练,初始论文以内部协变量偏移解释。实际并非每层必须使用、位置也非唯一;后续研究指出优化平滑性等也重要,因此不应把题干解释当作唯一机制。
一个典型的产品生命周期通常被划分为四个阶段,依次是引入期、成长期、成熟期和衰退期,每个阶段都对应着不同的市场特征和营销策略。()
参考答案:正确
典型生命周期为引入、成长、成熟、衰退;不同阶段对应不同市场和经营策略。
A · 55 题
关于职业道德与社会公德两者关系的论述中,最能准确地体现了职业道德的概念特殊性的是()。
参考答案:A
职业道德针对特定职业职责,把一般道德要求具体化;不存在唯一体现、无条件优先或永久不变的结论。
与国家法律法规相比,职业守则最显著的特点的是()。
参考答案:D
职业守则具有行业针对性和行为指导性;普遍法律强制力来自法律法规。
职业守则的核心内容侧重于规范从业人员的专业行为和伦理责任。以下内容中,其详细规定更常见于企业的劳动合同或人力资源管理制度的是()。
参考答案:B
薪酬等级与晋升渠道属于人力资源制度;保密、避免利益冲突和维护专业声誉属于职业规范。
一名人工智能训练师在项目周期紧张的情况下,接收了一批由第三方数据供应商提供的、 未经严格溯源验证的标注数据集。此时最符合职业规范的做法是()。
参考答案:C
未经溯源的数据应先验证并报告风险;赶进度、简单过滤或仅口头说明不能替代来源与授权核查。
Windows 系统自带的“磁盘清理”工具,其主要功能是()。
参考答案:B
磁盘清理主要删除临时文件等以释放空间;与碎片整理、杀毒和备份不同。
当你的Windows 电脑突然无法连接到任何网络,但其他设备(如手机)连接同一Wi-Fi 正常时,应优先尝试的快速修复步骤是()。
参考答案:C
同一网络其他设备正常,先排查本机,疑难解答或重启是低成本步骤。
在Word,Excel,PowerPoint 等多个Office 组件中,通常用于执行“撤销”上一步操作快捷键是()。
参考答案:D
Ctrl+Z 是撤销,Ctrl+Y 通常是重做;Ctrl+C/X 是复制/剪切。
在Word 长文档中,使用“样式库”来统一格式化各级标题,其最核心的优势在于()。
参考答案:D
标题样式让同级格式统一,也支持导航与自动目录。
在Excel 中,你需要根据一个“员工信息表”中的员工ID,从另一个“薪资表”中查找并返回该员工对应的薪资。最常用于实现这种跨表查找匹配功能的函数是()。
参考答案:A
VLOOKUP/XLOOKUP 用键值查找匹配;SUM、COUNT 主要用于汇总,IF 用于条件判断。
某公司希望分析其产品在过去五年中每年的销售额变化趋势,以便预测未来的销售情况。最适合直观地展示这一数据的图表类型是()。
参考答案:B
折线图适合展示按时间排列的连续变化趋势。
在履行劳动合同期间,劳动者有权立即解除劳动合同,无需事先告知用人单位的情形是()。
某女职工在劳动合同期内怀孕,根据《劳动合同法》的规定,用人单位应正确处理其劳动关系的方案是()。
参考答案:B
第 42、45 条规定孕期、产期、哺乳期的相应保护及期满续延。该保护限制特定解除事由,并不免除第 39 条等其他法定情形,不能理解为任何情况下均不可解除。
关键信息基础设施的运营者采购可能影响国家安全的网络产品和服务时,应履行的特殊法定义务是()。
某公司的工程师在执行公司指派的研发任务过程中,完成了一项技术发明。根据《专利法》,该项职务发明的专利申请权归属于()。
一项发明创造要获得专利权,必须满足法定的实质性条件。授予专利权所要求的“三性” 之一是()。
根据我国《著作权法》,作品能够作为客体受到该法的保护的是()。
企业为了提升运营效率,将原先独立的客户关系管理系统(CRM)、企业资源规划系统(ERP)和供应链管理系统(SCM)通过接口进行数据打通和流程衔接,使其能够协同工作。这个过程最准确地描述的概念是()。
参考答案:C
通过接口打通 CRM、ERP、SCM 并衔接流程属于系统集成。
某电商平台设定了“提升用户忠诚度”的业务目标,用于监测该目标实现程度的关键绩效指标(KPI)应该是()。
参考答案:B
复购率直接反映持续购买与忠诚度;新增用户和页面浏览量不能直接衡量忠诚。
在标准的跨职能流程图(泳道图)中,菱形(Diamond)图形通常用来表示流程中的环节是()。
参考答案:B
菱形表示判断或决策,并由条件产生不同分支。
在BPM(业务流程管理)中,借鉴双因素理论,“保健因素”指那些能消除员工不满, 但无法直接带来强烈工作满意度和激励的因素。最符合BPM 中“保健因素”的描述是()。
参考答案:C
缩短低效审批消除不满属于改善保健因素;成就、认可、授权更接近激励因素。
敏捷BPM(Agile BPM)方法论的核心特征是()。
参考答案:A
敏捷 BPM 强调跨职能协作、短周期迭代和持续交付改进。
在构建业务指标体系时,常常会确立一个“北极星指标”(North Star Metric)。这个指标在整个指标体系中扮演的主要角色是()。
参考答案:D
北极星指标聚焦长期用户价值,帮助团队对齐;配套指标用于诊断和约束。
在AARRR 用户增长模型中,“激活”(Activation)环节旨在衡量用户是否体验到了产品的核心价值。对于一款在线笔记应用,最能直接反映用户的“激活”状态的指标是()。
参考答案:B
成功创建并保存首条笔记,最直接体现新用户体验到产品核心价值。
在客户分析中,对客户进行分群(Segmentation)的主要目的是()。
参考答案:B
分群将相似特征或行为的客户归类,用于差异化服务和营销。
产品路线图(Product Roadmap)在产品管理中的主要作用是()。
参考答案:B
路线图沟通产品战略、优先级和演进计划,不等同于逐日排期或技术规格。
在使用“需求蛋模型”对产品需求进行结构化分析时,处于最核心位置的“蛋黄”部分,通常代表的是()。
参考答案:A
按题目选项的语义,核心应是用户真实目标与痛点。不同教材对“需求蛋模型”的命名和层次可能不同,此处据题干判断,不视为统一标准定义。
在绘制标准业务流程图时,平行四边形(Parallelogram)符号通常代表()。
参考答案:B
标准流程图的平行四边形表示输入或输出。
在绘制业务实体关系图(ERD)时,用来表示一个“实体”(如“学生”、“课程”)的图形符号通常是()。
参考答案:D
经典 Chen ER 图中实体用矩形,属性用椭圆,关系用菱形;其他 ER 记法可能不同。
状态图(State Diagram)作为一种建模工具,其主要的应用场景是用来描述()。
参考答案:C
状态图描述一个对象的状态、触发事件和状态转换。
贯穿于整个产品生命周期的需求管理(Requirements Management),其核心目的是 ()。
参考答案:B
四个选项中 B 最接近需求可追溯和实现一致性的目的。实际应对齐经过审批的当前需求基线,合理变更可纳入基线,而不是永远锁定最初版本。
在产品管理中,建立“需求池”(Demand Pool / Backlog)的核心目的是()。
参考答案:C
需求池统一收集并评估需求,支持筛选和排序,不代表承诺全部实现。
选项中最能体现一款人工智能产品的“可靠性”(Reliability)的是()。
参考答案:C
在相同或相似条件下稳定提供符合预期的服务,更符合可靠性;单一竞赛高分并不足够。
一种项目预算编制方法,它通过对项目范围中最低层次的工作包(Work Package)进行详细的成本估算,然后逐层向上汇总,最终得出项目总预算。这种方法被称为()。
参考答案:C
逐项估算工作包再汇总是自下而上估算。
一家历史悠久的知名企业,拥有强大的品牌认知度和客户忠诚度。在对其进行SWOT 分析时,这一优势应归类的象限是()。
参考答案:B
品牌与忠诚度是组织内部有利条件,归入 SWOT 的优势 S。
运用5W1H 分析法制定项目计划时,其中“H”(How)主要解决的是()。
参考答案:D
How 回答执行方法、步骤与资源;Why、What、Where 分别关注原因、内容与地点。
PDCA(戴明环)是经典的质量管理模型,代表了持续改进的四个步骤。其中,字母“A” 所代表的步骤是()。
参考答案:D
PDCA 为计划、执行、检查、处理;Act 指根据检查结果纠偏、标准化和进入下一轮。
看板(Kanban)作为一种流行的敏捷项目管理方法,其核心实践之一是()。
参考答案:C
看板核心是可视化流程和限制 WIP,减少积压并改善流动。
在Scrum 这一敏捷开发框架中,将开发工作划分为固定时长的、有节奏的短周期。这个短周期被称为()。
参考答案:C
Scrum 的固定周期称 Sprint;故事点是估算单位,燃尽图是跟踪工具。
瀑布式(Waterfall)开发模型最核心的特征是()。
参考答案:B
瀑布模型以线性阶段和前后衔接为核心,不以短周期产品增量为特征。
在项目范围管理中,将项目交付物和项目工作分解成更小的、更易于管理的组成部分的结构化工具是()。
参考答案:A
WBS 分解交付物和工作范围;RACI 是责任分配,甘特图用于进度展示。
在项目风险管理中,当团队决定采取措施来降低某个已识别风险发生的概率或其造成的影响时,这种风险应对策略被称为()。
参考答案:D
降低风险概率或影响是风险减轻;规避是改变方案避开风险,转移是转交风险责任。
在项目管理中,使用“权力/利益方格”(Power/Interest Grid)对项目相关方进行分类, 其主要目的是()。
参考答案:C
权力/利益分类用于确定相关方沟通频率和参与方式。
根据PMBOK(项目管理知识体系指南),项目管理被划分为五大过程组。其中,用于正式授权项目或阶段,并明确项目初步目标和范围的过程组是()。
参考答案:A
传统五大过程组中启动过程组授权项目或阶段。这里按题目引用的过程组框架作答,不意味着所有新版指南都仅以此结构组织。
在项目进度网络图中,“关键路径”(Critical Path)所代表的含义是()。
参考答案:B
关键路径是网络中总工期最长的路径,决定最早可完成时间;它可以不唯一。
在项目活动排序时使用的紧前关系绘图法(PDM)中,最常用的一种逻辑关系是()。
参考答案:A
完成到开始表示前置活动完成后,后续活动才能开始,是最常见依赖关系。
在编写一份有效的企业培训计划时,需要遵循一系列基本原则。其中,确保培训内容和目标与公司的整体战略及业务目标紧密结合,以解决实际业务问题、支撑公司发展,这一做法体现的核心原则是()。
参考答案:A
培训与战略和业务目标对齐体现战略导向。
制定一份结构化的培训计划通常遵循特定的逻辑步骤。在着手设计具体的培训课程内容和形式之前,首要的、基础性的步骤是()。
参考答案:D
先分析需求、明确差距和目标,才能决定课程、讲师和资源。
在构建企业战略性培训体系时,为了使培训内容与岗位要求和员工发展路径精准对齐, 一种进阶的做法是首先建立一套能够描述各岗位所需知识、技能和素质的标准化框架。这个框架被称为()。
参考答案:C
岗位胜任力模型描述岗位所需知识、技能、能力及相关素质。
在对培训效果进行深度评估时,柯克帕特里克(Kirkpatrick)四级评估模型是经典的框架。其中,旨在衡量培训项目最终为企业带来的业务影响和价值的最高层级评估是()。
参考答案:B
四级依次为反应、学习、行为、结果;结果层衡量组织或业务影响。
在对有一定基础的学员进行进阶实践教学时,为了提升其综合解决复杂问题的能力, 一种有效的教学方法是设计一个完整的、贴近真实业务场景的项目,引导学员以团队形式全程参与并交付成果。这种方法被称为()。
参考答案:A
通过真实业务项目团队协作完成交付,属于项目式学习。
在编制一份进阶的业务指导方案时,为了确保指导能够真正启发受训者的深层能力, 除了明确具体的操作技能外,更关键的要点是()。
参考答案:D
进阶指导应培养思维模型和通用问题解决框架,而不仅是记忆操作流程。
为了向管理层证明一项关键人才指导项目的商业价值,需要采用一种能够将指导效果与财务指标直接挂钩的进阶评估方法。这种方法通常被称为()。
参考答案:D
ROI 将经合理归因的培训收益与成本比较,通常为(收益-成本)/成本;不能把全部业务增长直接归于培训。
在柯克帕特里克四级评估模型中,反应层(Reaction)评估的主要目的是了解学员对指导或培训项目的主观感受。最常用于收集这一信息的工具或方法是()。
参考答案:A
满意度问卷衡量主观反应;知识考试对应学习层。
在学习层(Learning)评估中,为了衡量学员是否真正掌握了指导中所传授的知识和技能,最有效的评估方法是()。
参考答案:D
案例分析或实操评分更直接检验知识与技能是否掌握。
行为层(Behavior)评估旨在考察学员是否将培训所学应用到了实际工作中。要获得这方面真实可靠的评估信息,一种进阶的评估方法是()。
参考答案:A
培训后延时的多方反馈可观察岗位行为转变;业绩指标变化更接近结果层。
A · 8 题
某软件公司的核心源代码被一名前员工非法复制并出售给竞争对手,造成了重大经济损失。根据我国知识产权相关法律法规,该公司可以采取的法律途径来保护自己的合法权益包括()。
一个BPM 团队计划在公司内部寻找适合进行自动化改造的业务流程,他们可以采用有效的方法来识别这些机会点的是()。
参考答案:ABC
文档与数据分析、跨部门访谈、流程挖掘均能识别重复且规则明确的自动化机会。复杂情感判断通常不能优先作为简单规则自动化对象。
集成学习(Ensemble Learning)通过结合多个学习器的预测来获得比单个学习器更好的性能。属于集成学习范畴的算法是()。
参考答案:ACD
随机森林、GBDT、AdaBoost 都结合多个基学习器。单独的 SVM 通常是单个学习器。
在信息技术领域,算法效率(通常通过时间复杂度和空间复杂度来衡量)具有至关重要的意义。算法效率的高低会直接或间接影响的方面包括()。
参考答案:ABCD
时间和空间效率影响响应体验、可处理的数据规模、运营资源成本及迭代速度。
在软件开发和算法设计中,选择正确的数据结构是提升程序效率和可维护性的关键。选择一个合适的数据结构时,通常需要综合考量的因素是()。
参考答案:ABC
操作类型、逻辑关系和内存约束决定结构选择;语言流行程度不是核心数据结构选择标准。
在深度神经网络训练中,选择一个合适的参数初始化策略至关重要。一个良好的初始化策略可以的好处是()。
参考答案:ABC
合理初始化有利于收敛与梯度稳定,Xavier 是常用策略。将所有隐藏层权重置零无法打破隐藏神经元间的对称性,不能推荐为通用策略;偏置置零可单独讨论。
损失函数是连接数据与模型的桥梁,用于指导模型的学习。关于常见损失函数与其适用任务,以下正确的描述是()。
参考答案:ABD
MSE 常用于回归,交叉熵用于分类,Hinge 常用于 SVM。Log-Cosh 是对数双曲余弦损失,通常用于回归;原题 C 的中文名称和聚类用途均不准确。
与传统软件相比,人工智能(AI)产品面临着一些独特的安全威胁。属于针对AI 模型特有的攻击类型是()。
参考答案:ABD
对抗攻击、数据投毒和模型窃取针对模型输入、训练或行为。SQL 注入是传统数据库应用攻击,并非 AI 模型特有攻击。
A · 6 题
某制造企业发现其“客户订单处理”流程周期长、错误率高,严重影响了客户满意度和运营效率。请简述在对此流程进行改进时,可以采用的核心策略,并勾勒出从启动到完成的基本实施路径。
确定流程负责人和目标 → 访谈并收集周期、错误率等基线 → 绘制现状泳道图、识别瓶颈 → 设计目标流程和接口 → 小范围试点、培训并验证 → 分阶段推广 → 持续监控并按 PDCA 改进。
量化目标示例:试点 4 周内订单处理时长较基线下降 30%,差错率下降 50%,并确认投诉率和合规指标不恶化。数字为方案目标,不是已取得的结果。
某创业公司计划推出一款主打“深度学习与知识分享”的垂直领域内容社区App,现需对市场上的成熟竞品(如知乎、B 站知识区等)进行一次全面的竞品分析。请构建一个竞品分析的框架,至少包含三个核心分析维度,并为其中两个维度各举出一个具体的分析点。
| 维度 | 分析内容 | 具体分析点 |
|---|---|---|
| 定位与用户 | 目标人群、使用情境、核心价值 | 比较入门学习者与专业研究者需求;通过访谈核对定位 |
| 内容与功能 | 内容供给、搜索、推荐、学习路径、互动 | 记录完成“找到专题并收藏”任务的步骤、耗时和失败点 |
| 用户体验与社区 | 阅读体验、互动质量、审核与激励 | 抽样统计有实质内容的回复比例及违规内容处置流程 |
| 商业与运营 | 变现模式、创作者激励、获客与留存 | 区分广告、会员、课程等模式,评估与深度学习目标的冲突 |
采用同一批任务、统一评分表和相同时间窗口进行比较,注明样本与数据来源。最后提炼“需求缺口—差异化机会—优先级—验证方式”。本题是分析框架示例,未声称竞品的当前实测表现。
一名数据科学家使用梯度提升决策树(GBDT)算法训练了一个分类模型。该模型在训练集上的准确率高达99%,但在验证集上的准确率仅为75%,表现出明显的过拟合现象。 请您列举并简要说明五种可以用来缓解过拟合、提升模型泛化性能的调优技术,其中至少需要包含数据层面和模型/算法层面的方法。
调优只使用训练集和验证集,最终测试集保留到最后评估。普通 GBDT 不采用神经网络式 Dropout;某些扩展算法有自己的正则参数,不能直接混用。
一家智能家居公司推出了三款核心产品:A.智能音箱(可语音控制、播放音乐)、B.智能彩光灯泡(可调节亮度和颜色)、C.智能安防摄像头(可进行运动检测)。为了将它们从三个孤立的产品提升为一个协同工作的“智能产品组合解决方案”,需要设计产品间的联动。请您: a)设计一个基于数据互通实现的“个性化”联动场景。 b)设计一个基于功能协同实现的“自动化”联动场景。 c)简述实现这两种联动场景,需要在技术层面解决的一个共性核心问题。
用户授权后,汇总音箱的音乐偏好与灯泡的亮度/颜色调整记录。识别用户常用的晚间阅读时段后,建议“阅读模式”:音箱播放偏好的轻音乐,灯泡调整为用户历史选择的亮度。用户可确认、修改或关闭建议。
离家模式开启时,摄像头检测到异常运动 → 网关校验事件与布防状态 → 灯泡闪烁提示 → 音箱播报告警 → 向手机发送事件,用户或安防人员复核;正常宠物活动按规则过滤。
统一设备协议和数据接口,建立设备/用户标识、事件格式与可执行指令,实现身份授权、可靠传输和动作回执。还需处理超时、重复事件和设备离线,避免错误联动。
一位习惯于管理传统App 开发的项目经理,首次接手一个“智能推荐算法”的研发项目。 他发现,传统软件项目中明确的“功能开发”和“交付日期”等概念,在算法研发项目中变得模糊且难以预测。 请您指出,与传统软件项目相比,智能产品项目管理在计划与执行方面存在的三个主要差异点,并针对其中两点简要说明其应对策略。
| 差异 | 对计划与执行的影响 | 应对策略 |
|---|---|---|
| 实验不确定性 | 模型训练完成不等于业务效果达标,算法效果依赖实验与数据 | 把工作拆成数据验证、基线、迭代、离线评估、A/B 试验;设置时间预算和停止/回退标准 |
| 数据与标注依赖 | 数据来源、质量和分布变化影响进度和交付 | 前置授权、标注与质量验收,设数据负责人;对数据集、特征和模型进行版本管理 |
| 效果与上线后的持续变化 | 准确率、偏差和漂移需持续评估,不能只看功能是否运行 | 定义模型指标及业务护栏,灰度发布并监测;触发条件满足后重训或回滚 |
项目排期使用分阶段里程碑与风险缓冲,承诺可验证的交付条件,避免保证某一天必然达到某个未经实验的准确率。
某新闻资讯App 的产品经理提出了一个业务目标:“为用户提供个性化的新闻推荐,以提升用户阅读时长”。作为负责此项目的人工智能训练师,您需要将这个模糊的业务目标, 提炼为可执行、可衡量的智能产品功能需求。 请您从以下三个层面,分别阐述需要明确定义的具体需求内容: a)模型任务定义 b)模型性能度量 c)数据需求
给定用户授权的历史行为和当前候选新闻,对候选进行个性化排序,预测点击或有效阅读概率,输出 Top-K 新闻及必要解释。定义推荐时机、更新频率、冷启动处理及人工/规则兜底。
离线定义 Recall@K、NDCG@K 等排序指标及用户分群结果;在线通过 A/B 实验评估人均有效阅读时长、点击率和留存。设置推荐响应时间、重复率、多样性、投诉率及内容质量护栏。明确有效阅读口径、实验周期和相对提升目标,不能仅以点击率代替阅读价值。
需要新闻文本、主题、发布时间及曝光、点击、停留时长、收藏等带时间戳的日志,明确正负样本和异常停留过滤。采用授权和最小必要原则,设定数据保留期限与访问权限;按时间划分训练、验证、测试集,避免未来信息泄漏,并补充新用户和少数兴趣群体的代表性样本。
B1.1 · 25 分钟
连锁快餐品牌希望提升线上点餐服务的智能化水平。现有流程是:用户选商品并备注个性化需求,系统将订单推送至门店,门店制作出餐,用户自取或配送。
主要痛点:个性化推荐与优惠匹配不足、转化和复购偏低;高峰点餐拥堵、特殊备注易出错;厨房制作与门店接单缺少智能调度。
按“痛点—模块—输入输出—人工介入—效果指标”组织答案,明确系统异常或识别不确定时的处理流程。
| 模块 | 技术与作用 | 输入/输出及协作 |
|---|---|---|
| 点餐与推荐 | 用户偏好特征+召回/排序;优惠资格由规则引擎校验 | 输入菜单、库存、授权行为;输出候选商品及优惠,用户可拒绝 |
| 备注解析 | 意图识别、实体/属性抽取+商品规则校验 | 将“拿铁少冰”映射到商品行、冰量属性;冲突或低置信度转店员 |
| 订单与厨房调度 | 订单状态机、消息队列、按工位和负荷调度 | 输入订单与门店产能;输出厨房任务、预计出餐时间和配送任务 |
| 质量反馈 | 监测备注正确率、延迟、取消率与反馈 | 店员纠正记录进入标注复核流程;模型版本可回滚 |
订单输入包含 order_id、store_id、商品行 item_id、备注和履约方式;解析输出包含 item_id、attribute、value、confidence、model_version;状态回传包含已确认、制作中、待取餐、已完成、异常及时间戳。采用订单号+版本做幂等处理,避免重复下单与重复派送。
| 痛点 | 措施 | 目标示例(需试点验证) |
|---|---|---|
| 营销转化低 | 基于偏好与实时库存推荐、规则匹配优惠,通过 A/B 检验 | 订单转化率较基线提升 5%,投诉率不升高 |
| 高峰拥堵 | 队列限流、容量预约、动态预计出餐时间;避免接受超产能订单 | P95 出餐等待较基线降低 20% |
| 多轮备注错误 | 保存会话上下文,每轮只确认新增/冲突属性,付款前展示完整摘要 | 备注准确传递率达到 99% |
| 门店协作低效 | 订单与工位状态同步、超时预警、异常责任人和重试机制 | 重复派单为 0;接单响应 P95≤10 秒 |
以上指标是拟定验收目标,实际阈值应以门店基线、成本和试点结果确认。
B1.2 · 20 分钟
房地产企业与中介需要基于历史交易和市场环境数据,优化定价、识别购房需求并提前发现市场风险。提供房屋交易数据与市场环境数据两份 CSV,以及待补全的 Notebook。
区分成交总价(万元)与成交单价(元/平方米)。区域比较需要说明价格口径;月度合并需要统一月份字段。图表结论与业务建议应一一对应。
区域比较以 unit_price 的区域均值为主要口径,避免将大面积住宅的总价与小面积住宅直接比较。月度趋势按 transaction_date 汇总;市场指标按 date 汇总后以月份连接。完整代码和实测结果见下方。
| 场景 | 隐藏价值 | 如何应用 |
|---|---|---|
| 定价优化 | 减少定价失配造成的销售周期延长,改善房源结构 | 以区域与户型基线评估相对溢价,结合位置、楼龄和装修解释,不把低价直接等同价值洼地 |
| 需求洞察 | 指导户型供给、营销预算与房源推荐 | 对交易数量、库存及转化率联合分析;交易量本身不等于全部潜在需求 |
| 风险预警 | 改善现金流与库存风险管理 | 观察价格、成交量、利率和供给共变,形成分级预警;相关性不证明利率导致房价变化 |
选取定价优化场景:输入区域、面积、户型、楼层、楼龄、装修与交易时点等字段,以成交单价作为目标,先建立区域均值/线性回归基线,再比较随机森林或梯度提升回归。所有特征须在报价时已知,不能使用由最终成交价推导的字段。
按时间划分训练/验证/测试集,预处理只在训练集拟合;评价 MAE、RMSE、分区域误差及价格区间覆盖率。输出建议价格区间和影响因素,由经纪人结合实际房况审核。预期效果是降低相对基线的价格误差与售出周期,需通过留出测试和试点确认,不能把预期写为已实现。
数据质量注意:附件 price 与 area×unit_price/10000 不总一致,区域单价也呈固定值模式。应记录口径差异并向数据负责人确认,保留原始字段,不能直接据样例推导真实市场投资结论。
匹配 12 个月;月度房价与利率相关系数为 0.0015,样例中未呈现明显线性关系,不能据此推断因果。
| 区域 | 平均单价(元/平方米) |
|---|---|
| R_02 | 6000.0 |
| R_01 | 8000.0 |
| R_03 | 8500.0 |
| R_05 | 9000.0 |
| R_06 | 9500.0 |
| R_04 | 11000.0 |
| 户型 | 交易数 |
|---|---|
| 三居室 | 516 |
| 一居室 | 507 |
| 四居室及以上 | 500 |
| 二居室 | 477 |
以下实现已在项目附件数据上运行。原始填空框架保持不变,参考实现单独提供。下载代码后与该题 CSV 放在同一目录运行;Python 环境需安装 pandas、matplotlib,B2 另需 scipy 和 scikit-learn。
打开完整运行结果下载参考 Python 代码下载参考 Notebook(含运行输出)"""B1.2 非官方参考实现:分析附件,不作真实市场投资判断。"""
from pathlib import Path
import base64, html, io, json
import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib import font_manager
BASE = Path(__file__).resolve().parent if '__file__' in globals() else Path.cwd()
OUT = BASE / 'B1.2_output'
OUT.mkdir(exist_ok=True)
available = {f.name for f in font_manager.fontManager.ttflist}
font = next((f for f in ['Microsoft YaHei', 'SimHei', 'Noto Sans CJK SC'] if f in available), 'DejaVu Sans')
plt.rcParams.update({'font.sans-serif':[font], 'axes.unicode_minus':False, 'figure.dpi':120})
def read_csv(name):
candidates = [Path.cwd()/name, BASE/name, BASE.parent/'materials'/name]
path = next((p for p in candidates if p.is_file()), None)
if path is None: raise FileNotFoundError(f'请将 {name} 与参考代码放在同一目录')
return pd.read_csv(path)
housing_data = read_csv('housing_transactions.csv')
market_data = read_csv('market_data.csv')
housing_data['transaction_date'] = pd.to_datetime(housing_data['transaction_date'], errors='raise')
market_data['date'] = pd.to_datetime(market_data['date'], errors='raise')
for col in ['area','price','unit_price']:
housing_data[col] = pd.to_numeric(housing_data[col], errors='raise')
if housing_data[['region','house_type','transaction_date','area','price','unit_price']].isna().any().any():
raise ValueError('关键字段存在缺失,应先确认并记录处理策略')
if (housing_data[['area','price','unit_price']] <= 0).any().any():
raise ValueError('面积和价格必须为正值')
# 区域价格以成交单价为口径,避免面积对总价的混淆。
avg_price_by_region = housing_data.groupby('region')['unit_price'].mean().sort_values()
transaction_count_by_type = housing_data['house_type'].value_counts()
housing_data['month'] = housing_data['transaction_date'].dt.to_period('M').astype(str)
market_data['month'] = market_data['date'].dt.to_period('M').astype(str)
monthly_price = housing_data.groupby('month', as_index=False).agg(avg_price=('unit_price','mean'))
monthly_rate = market_data.groupby('month', as_index=False).agg(interest_rate=('interest_rate','mean'))
risk_trend = pd.merge(monthly_price, monthly_rate, on='month', how='inner').sort_values('month')
region_trend = housing_data.groupby(['month','region'])['unit_price'].mean().unstack('region')
if risk_trend.empty: raise ValueError('交易与市场数据没有可匹配月份')
def image(fig):
buffer = io.BytesIO();fig.savefig(buffer,format='png',bbox_inches='tight');plt.close(fig)
return 'data:image/png;base64,' + base64.b64encode(buffer.getvalue()).decode('ascii')
fig, ax = plt.subplots(figsize=(7,4))
avg_price_by_region.plot.bar(ax=ax,color='#2466b5');ax.set(title='区域平均成交单价',xlabel='区域',ylabel='元/平方米')
img_region = image(fig)
fig, ax = plt.subplots(figsize=(7,4))
transaction_count_by_type.plot.bar(ax=ax,color='#2466b5',rot=15);ax.set(title='各户型交易数量',xlabel='户型',ylabel='交易数')
img_types = image(fig)
fig, ax = plt.subplots(figsize=(8,4))
region_trend.plot(ax=ax,marker='o');ax.set(title='各区域月度成交单价趋势',xlabel='月份',ylabel='元/平方米')
img_trend = image(fig)
fig, ax = plt.subplots(figsize=(8,4))
ax.plot(risk_trend['month'],risk_trend['avg_price'],color='#1754b8',marker='o',label='平均单价')
ax.set_ylabel('成交单价(元/平方米)',color='#1754b8');ax.tick_params(axis='x',rotation=45)
ax2=ax.twinx();ax2.plot(risk_trend['month'],risk_trend['interest_rate'],color='#a64a10',marker='s',label='利率')
ax2.set_ylabel('商贷利率(%)',color='#a64a10');ax.set_title('房价与利率月度趋势(双轴尺度)')
fig.tight_layout();img_risk=image(fig)
correlation = risk_trend['avg_price'].corr(risk_trend['interest_rate'])
price_gap=(housing_data['price']-housing_data['area']*housing_data['unit_price']/10000).abs()
stats={'housing_rows':len(housing_data),'market_rows':len(market_data),'matched_months':len(risk_trend),
'avg_unit_price_by_region':avg_price_by_region.round(2).to_dict(),
'transactions_by_type':transaction_count_by_type.to_dict(),
'monthly_price_rate_correlation':round(float(correlation),4),
'price_identity_mismatches_over_0_02_wan':int((price_gap>0.02).sum()),
'price_identity_median_gap_wan':round(float(price_gap.median()),4)}
print('区域平均单价(元/平方米)\n',avg_price_by_region.to_string())
print('\n户型交易数量\n',transaction_count_by_type.to_string())
print('\n月度价格与利率\n',risk_trend.to_string(index=False))
print('\n运行摘要\n',json.dumps(stats,ensure_ascii=False,indent=2))
avg_price_by_region.to_csv(OUT/'region_prices.csv',encoding='utf-8-sig')
transaction_count_by_type.to_csv(OUT/'house_type_counts.csv',encoding='utf-8-sig')
risk_trend.to_csv(OUT/'monthly_risk_trend.csv',index=False,encoding='utf-8-sig')
(OUT/'summary.json').write_text(json.dumps(stats,ensure_ascii=False,indent=2),encoding='utf-8')
def tbl(df):return '<div class="table">'+df.to_html(border=0,index=False,escape=True)+'</div>'
body='<h1>B1.2 参考代码运行结果</h1><p>非官方参考实现;以下数值由项目附件实际计算。样例不能代表真实市场。</p>'
body+='<h2>房屋定价</h2>'+tbl(avg_price_by_region.rename('平均单价').reset_index())+'<img alt="区域平均单价柱状图" src="'+img_region+'">'
body+='<img alt="区域月度单价趋势图" src="'+img_trend+'">'
body+='<p>样例区域单价呈固定值模式。R_02 较低、R_04 较高,只说明该样例的区域价格差异;还需控制房况和供需,不能直接判定投资价值。</p>'
body+='<h2>购房需求</h2>'+tbl(transaction_count_by_type.rename_axis('户型').rename('交易数').reset_index())+'<img alt="户型交易数量柱状图" src="'+img_types+'">'
body+='<p>交易最多的户型与其余户型差距需结合库存和样本规模分析,不能仅以数量判断全部用户需求。</p>'
body+='<h2>市场风险趋势</h2>'+tbl(risk_trend)+'<img alt="房价与利率双轴折线图" src="'+img_risk+'">'
body+='<p>月度相关系数为 '+str(stats['monthly_price_rate_correlation'])+',仅 '+str(len(risk_trend))+' 个观测月份;相关性不证明因果。双轴图的刻度不同,应读取各自单位,不能凭曲线距离判断关系。</p>'
body+='<h2>质量与口径检查</h2><p>price 与 area×unit_price/10000 的绝对差超过 0.02 万元的记录数:'+str(stats['price_identity_mismatches_over_0_02_wan'])+';绝对差中位数:'+str(stats['price_identity_median_gap_wan'])+' 万元。需要核对价格口径,未擅自修改原数据。</p>'
style='body{font:17px/1.8 system-ui,"Microsoft YaHei",sans-serif;color:#17263b;max-width:900px;margin:auto;padding:20px}img{width:100%;height:auto}table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid #dce4ee;padding:10px;text-align:left}.table{overflow:auto}h1{font-size:1.6rem}h2{font-size:1.25rem}'
report='<!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>B1.2 参考运行结果</title><style>'+style+'</style><body><a href="../index.html#b12">返回学习资料</a>'+body+'</body></html>'
(BASE/'B1.2_reference.html').write_text(report,encoding='utf-8')
| 字段 | 含义 | 第一条示例 |
|---|---|---|
| transaction_id | 交易编号 | 100001 |
| transaction_date | 交易日期 | 2024-05-31 |
| region | 区域/城区 | R_03 |
| house_type | 户型 | 二居室 |
| area | 建筑面积(平方米) | 75 |
| price | 成交总价(万元) | 62.55 |
| unit_price | 成交单价(元/平方米) | 8500 |
| floor | 所在楼层 | 6层 |
| total_floors | 总楼层数 | 24 |
| year_built | 建造年份 | 2021 |
| decoration | 装修情况 | 毛坯 |
| buyer_type | 买方类型 | 首套 |
| 字段 | 含义 | 第一条示例 |
|---|---|---|
| date | 日期 | 2024-01-15 |
| interest_rate | 商贷利率(%) | 3.21 |
| new_supply | 新增房源套数 | 2546 |
| transaction_volume | 全市交易套数 | 2318 |
| avg_listing_price | 挂牌均价(元/平方米) | 9979.0 |
原始练习框架,保留填空位置。当前文件没有运行结果。
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
housing_data = pd.read_csv('housing_transactions.csv')
market_data = pd.read_csv('market_data.csv')
# 时间格式转换
housing_data['transaction_date'] = pd.to_datetime(housing_data['transaction_date'])
market_data['date'] = pd.to_datetime(market_data['date'])
# 业务机会点一:房屋定价优化
# 统计不同区域的平均房价,识别价值洼地和高溢价区域
avg_price_by_region =____________________
print("房屋定价优化:不同区域的平均房价")
print(avg_price_by_region)
avg_price_by_region.plot(kind='bar', title='不同区域的平均房价')
plt.xlabel('区域')
plt.ylabel('平均房价')
plt.show()
# 业务机会点二:购房需求洞察
# 统计不同房型的交易数量,识别市场需求偏好
transaction_count_by_type = ____________________
print("\n购房需求洞察:不同房型的交易数量")
print(transaction_count_by_type)
transaction_count_by_type.plot(kind='bar', title='不同房型的交易数量')
plt.xlabel('房型')
plt.ylabel('交易数量')
plt.show()
# -------------------------
# 业务机会点三:市场风险预警
# -------------------------
# 按月统计平均房价(monthly_price), 可填写多行代码段
monthly_price = ____________________
____________________________________
____________________________________
# 按月统计平均利率(monthly_rate), 可填写多行代码段
monthly_rate = ____________________
____________________________________
____________________________________
# 合并房价和利率数据
risk_trend = pd.merge(monthly_price, monthly_rate, on='month', how='inner')
print("\n市场风险预警:房价与利率趋势")
print(risk_trend)
risk_trend.plot(x='month', y=['avg_price','interest_rate'], kind='line', marker='o', title='房价与利率趋势')
plt.xlabel('月份')
plt.ylabel('指标值')
plt.show()
下载 B1.2.ipynbB2 · 25 分钟
金融科技公司开发股票市场指数短期趋势预测系统。不同板块与交易时段存在波动差异,需构建高质量训练集与黄金测试集,并检验分布偏差。数据文件为 B2.csv。
代码框架有口径差异:读取文件名为 2.1.1.csv,应对应实际 B2.csv;rolling(window=5) 是 5 条记录,需核对是否为 5 个交易日;部分框架使用上涨概率,但原题要求平均涨跌幅和涨跌幅分布检验。不要直接把未补全框架视为标准答案。
对唯一日期使用 TimeSeriesSplit,选择末折作为固定留出集,使同一日所有指数和时段一起划分。此前的折可作时间验证;最后测试集不能用于参数选择。保留前期数据为训练集、后期数据为测试集,优先保持真实未来分布,不能为强行“分布一致”把未来样本混入训练。
分别按板块、市场阶段以及二者组合,比较涨跌幅原始样本,记录样本数、KS 统计量和 p 值;同时比较板块占比和均值/标准差。为满足原题也提供测试集与整体的描述性比较,但整体包含测试样本,二者不独立,其 p 值不作为严谨推断。训练与测试时序仍可能自相关,正式评估应结合按日分块重采样、漂移趋势与业务检查,多个检验还需考虑多重比较。p≥0.05 仅表示未拒绝同分布假设,不能证明分布相同。
依据:scikit-learn TimeSeriesSplit
| 目标 | 方法与测试数据 | 指标与验收示例 |
|---|---|---|
| 波动场景准确性 | 用不参与调参的未来时段,分层报告高波动、常态和各市场阶段;标签和窗口提前定义 | 分类:Macro-F1、召回率、混淆矩阵;回归:MAE/RMSE;与基线及总体差距不超过事先约定阈值 |
| 极端与边界稳健性 | 覆盖大幅上涨/下跌、零涨跌、缺失字段、时间乱序与板块缺样;明确异常处理 | 崩溃为 0;非法数据拒绝或隔离;分组缺样标为不足,不填虚假 0 |
| 性能与稳定性 | 按目标并发持续压测,加入短时突发与依赖超时 | P95 延迟≤约定 SLA、错误率≤0.1%,超时兜底与告警有效 |
| 代表性与漂移 | 比较板块占比、涨跌幅分布及近期波动统计 | 记录 KS 效应量与样本量;漂移触发人工复核/重训,而非只追求高 p 值 |
本参考实现完成数据构建和检验,未训练预测模型,因此没有真实预测准确率,也不会给出未经测量的性能结论。
| 项目 | 实测结果 |
|---|---|
| 有效记录 | 5400 |
| 训练集 | 4500 |
| 测试集 | 900 |
| 去除历史不足后的训练集 | 3600 |
| 训练截至日期 | 2024-05-25 |
| 测试开始日期 | 2024-05-26 |
market_phase 必须在预测时已知;事后牛熊阶段标签应滞后或用历史数据构造。完整分组检验和数据质量结果见下方运行报告。
以下实现已在项目附件数据上运行。原始填空框架保持不变,参考实现单独提供。下载代码后与该题 CSV 放在同一目录运行;Python 环境需安装 pandas、matplotlib,B2 另需 scipy 和 scikit-learn。
打开完整运行结果下载参考 Python 代码下载参考 Notebook(含运行输出)"""B2 非官方参考实现:描述统计、过去日期特征、日期级划分与分组检验。"""
from pathlib import Path
import json
import numpy as np
import pandas as pd
from scipy.stats import ks_2samp
from sklearn.model_selection import TimeSeriesSplit
BASE=Path(__file__).resolve().parent if '__file__' in globals() else Path.cwd()
OUT=BASE/'B2_output';OUT.mkdir(exist_ok=True)
path=next((p for p in [Path.cwd()/'B2.csv',BASE/'B2.csv',BASE.parent/'materials/B2.csv'] if p.is_file()),None)
if path is None:raise FileNotFoundError('请将 B2.csv 与参考代码放在同一目录')
df=pd.read_csv(path)
df['datetime']=pd.to_datetime(df['date']+' '+df['time'],errors='coerce')
df['pct_change']=pd.to_numeric(df['pct_change'],errors='coerce')
bad=df[['datetime','pct_change','index_id','sector','market_phase']].isna().any(axis=1) | (df['pct_change']<=-100)
quarantined=int(bad.sum());df.loc[bad].to_csv(OUT/'quarantined.csv',index=False)
df=df.loc[~bad].copy()
if df.duplicated(['index_id','datetime']).any():raise ValueError('存在同指数同时间重复记录,应确认后处理')
df=df.sort_values(['datetime','index_id']).reset_index(drop=True)
df['date_only']=df['datetime'].dt.normalize()
df['hour']=df['datetime'].dt.hour
df['time_period']=np.select([df['hour'].between(9,10),df['hour'].between(11,13)],['morning','noon'],default='afternoon')
df['up']=(df['pct_change']>0).astype(int)
# 原题要求的描述统计;不可将全量均值当作实时预测特征。
period_index_change=df.groupby(['index_id','date_only','time_period'],as_index=False).agg(avg_pct_change=('pct_change','mean'))
sector_phase_stats=df.groupby(['sector','market_phase'],as_index=False).agg(avg_pct_change=('pct_change','mean'),up_probability=('up','mean'))
# 日收益按每个时点相对上一时点的收益复合。样例按记录日期排序;
# 真实市场必须先核验交易日历、指数定义及百分比字段口径。
daily=df.groupby(['index_id','date_only'],as_index=False).agg(daily_return=('pct_change',lambda s:((1+s/100).prod()-1)*100))
daily=daily.sort_values(['index_id','date_only']).reset_index(drop=True)
daily['trend_5']=daily.groupby('index_id')['daily_return'].transform(
lambda s:s.shift(1).rolling(5,min_periods=5).apply(lambda r:((1+r/100).prod()-1)*100,raw=True))
df=df.merge(daily[['index_id','date_only','trend_5']],on=['index_id','date_only'],how='left',validate='many_to_one')
index_sector_trend=df.groupby(['index_id','sector'],as_index=False).agg(avg_trend_5=('trend_5','mean'))
def historical_mean_by_day(frame,keys,value,new_name):
"""同一天的记录均只读取更早日期,避免同时间跨指数数据泄漏。"""
g=frame.groupby(keys+['date_only'],as_index=False).agg(total=(value,'sum'),n=(value,'count'))
g=g.sort_values(keys+['date_only']).reset_index(drop=True)
previous_sum=g.groupby(keys)['total'].transform(lambda s:s.cumsum().shift(1))
previous_count=g.groupby(keys)['n'].transform(lambda s:s.cumsum().shift(1))
g[new_name]=previous_sum/previous_count
return frame.merge(g[keys+['date_only',new_name]],on=keys+['date_only'],how='left',validate='many_to_one')
df=historical_mean_by_day(df,['index_id','time_period'],'pct_change','hist_period_mean')
df=historical_mean_by_day(df,['sector','market_phase'],'pct_change','hist_sector_phase_mean')
# 对日期进行 TimeSeriesSplit,同一天的所有观测一起划分。
dates=np.sort(df['date_only'].unique())
if len(dates)<6:raise ValueError('日期太少,无法使用 5 折时序划分')
splits=list(TimeSeriesSplit(n_splits=5).split(dates))
train_idx,test_idx=splits[-1]
train_data=df[df['date_only'].isin(dates[train_idx])].copy()
test_data=df[df['date_only'].isin(dates[test_idx])].copy()
assert train_data['datetime'].max()<test_data['datetime'].min()
assert set(train_data['date_only']).isdisjoint(set(test_data['date_only']))
# 此实现假设逐日更新历史特征:测试日只能读取此前已完成日的数据,
# 不更新模型参数。若预测整个未来窗口,应在预测起点冻结所有特征。
# market_phase 还需在预测时已知;若是事后标注,应滞后或用历史数据构造。
features=['hist_period_mean','hist_sector_phase_mean','trend_5']
high_quality_train=train_data.dropna(subset=features).copy()
high_quality_train.to_csv(OUT/'high_quality_train_index.csv',index=False,encoding='utf-8-sig')
test_data.to_csv(OUT/'golden_test_index.csv',index=False,encoding='utf-8-sig')
period_index_change.to_csv(OUT/'period_index_change.csv',index=False,encoding='utf-8-sig')
sector_phase_stats.to_csv(OUT/'sector_phase_stats.csv',index=False,encoding='utf-8-sig')
index_sector_trend.to_csv(OUT/'index_sector_trend.csv',index=False,encoding='utf-8-sig')
def group_ks(reference,test,keys,label):
rows=[]
for key,g in test.groupby(keys):
values=key if isinstance(key,tuple) else (key,)
ref=reference
for field,value in zip(keys,values):ref=ref[ref[field]==value]
row={'comparison':label,'group_type':'+'.join(keys),'group':' / '.join(map(str,values)),
'n_reference':len(ref),'n_test':len(g)}
if len(ref)>=2 and len(g)>=2:
stat,pvalue=ks_2samp(ref['pct_change'],g['pct_change'],method='asymp')
row.update(ks_stat=float(stat),p_value=float(pvalue),note='时间自相关与多重检验需额外处理')
else:row.update(ks_stat=np.nan,p_value=np.nan,note='样本不足')
rows.append(row)
return pd.DataFrame(rows)
ks_tables=[]
for keys in [['sector'],['market_phase'],['sector','market_phase']]:
ks_tables.append(group_ks(train_data,test_data,keys,'train_vs_test'))
# 按原题提供全量对测试集的描述性比较。样本重叠,不作独立检验结论。
overlap=group_ks(df,test_data,keys,'overall_vs_test_descriptive')
overlap['note']='整体包含测试样本,p 值仅描述,不作独立推断'
ks_tables.append(overlap)
ks_results=pd.concat(ks_tables,ignore_index=True)
ks_results.to_csv(OUT/'ks_results.csv',index=False,encoding='utf-8-sig')
shares=pd.DataFrame({'overall_share':df['sector'].value_counts(normalize=True),
'train_share':train_data['sector'].value_counts(normalize=True),
'test_share':test_data['sector'].value_counts(normalize=True)}).fillna(0).reset_index(names='sector')
sector_changes=int((df.groupby('index_id')['sector'].nunique()>1).sum())
weekend_dates=int(pd.Series(dates).dt.dayofweek.ge(5).sum())
summary={'valid_rows':len(df),'quarantined_rows':quarantined,'observed_dates':len(dates),
'train_rows':len(train_data),'test_rows':len(test_data),
'quality_train_rows':len(high_quality_train),'warmup_rows_removed':len(train_data)-len(high_quality_train),
'train_last_date':str(train_data['date_only'].max().date()),'test_first_date':str(test_data['date_only'].min().date()),
'index_ids_with_multiple_sectors':sector_changes,'weekend_dates_in_sample':weekend_dates,
'ks_comparisons':len(ks_results)}
(OUT/'summary.json').write_text(json.dumps(summary,ensure_ascii=False,indent=2),encoding='utf-8')
print('运行摘要\n'+json.dumps(summary,ensure_ascii=False,indent=2))
print('\n时段特征(前 6 行)\n'+period_index_change.head(6).to_string(index=False))
print('\n板块×阶段均值及上涨概率\n'+sector_phase_stats.to_string(index=False))
print('\n板块占比\n'+shares.to_string(index=False))
print('\n训练/测试 KS 分组结果\n'+ks_results[ks_results['comparison']=='train_vs_test'].to_string(index=False))
def tbl(frame):return '<div class="table">'+frame.to_html(index=False,border=0,float_format=lambda x:f'{x:.4f}')+'</div>'
body='<h1>B2 参考代码运行结果</h1><p>非官方参考实现;由项目附件实际运行。未训练预测模型,不含模型准确率。</p>'
body+='<h2>划分与质量</h2>'+tbl(pd.DataFrame(list(summary.items()),columns=['项目','实测值']))
body+='<p>样例日期含周末,同一指数在样例中有多个板块标签。此处保留数据并按观测日期演示,真实市场需先核验交易日历及板块标签。</p>'
body+='<h2>指数×日期×时段均值(示例)</h2>'+tbl(period_index_change.head(12))
body+='<h2>板块×市场阶段均值</h2>'+tbl(sector_phase_stats)
body+='<h2>指数×板块历史五日趋势(示例)</h2>'+tbl(index_sector_trend.head(12))
body+='<h2>板块占比</h2>'+tbl(shares)
body+='<h2>训练与测试分组 KS</h2>'+tbl(ks_results[ks_results['comparison']=='train_vs_test'])
body+='<p>p≥0.05 不证明同分布。时序观测并非完全独立,多组检验也有多重比较问题;应结合效应量、样本量和按日期分块验证。</p>'
body+='<h2>整体与测试描述性 KS(原题要求)</h2>'+tbl(ks_results[ks_results['comparison']=='overall_vs_test_descriptive'])
body+='<p>整体包含测试样本,因此上述 p 值不能作为独立两样本推断。不要据此宣称测试集绝对代表整体,也不要通过混入未来样本来提高 p 值。</p>'
body+='<h2>特征使用边界</h2><p>全量描述均值单独导出。预测特征只包含更早日期信息,五日趋势排除当日。前期历史不足的训练行被排除;逐日评估时允许读入此前已发生的数据,固定多日预测则必须冻结预测起点可见数据。</p>'
body+='<p>market_phase 必须在预测时可观测。事后划定的牛熊阶段不能直接作为预测输入,应滞后或用历史规则构造;选择实际模型输入时要用明确的特征白名单,不能把原始结果列或未来标签全部送入模型。</p>'
style='body{font:17px/1.8 system-ui,"Microsoft YaHei",sans-serif;color:#17263b;max-width:1000px;margin:auto;padding:20px}table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid #dce4ee;padding:10px;text-align:left}.table{overflow:auto}h1{font-size:1.6rem}h2{font-size:1.25rem}'
(BASE/'B2_reference.html').write_text('<!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>B2 参考运行结果</title><style>'+style+'</style><body><a href="../index.html#b2">返回学习资料</a>'+body+'</body></html>',encoding='utf-8')
| 字段 | 含义 | 第一条示例 |
|---|---|---|
| date | 日期 | 2024-05-01 |
| time | 交易时间 | 09:30:00 |
| index_id | 指数标识 | IDX1 |
| pct_change | 涨跌幅(%) | 1.54 |
| sector | 市场板块 | 医疗 |
| market_phase | 市场阶段 | 牛市 |
原始练习框架,保留填空位置。当前文件没有运行结果。
import pandas as pd
import numpy as np
from datetime import datetime
from scipy import stats
from sklearn.model_selection import TimeSeriesSplit
def load_and_preprocess_data(file_path):
"""加载并预处理指数数据"""
try:
df = pd.read_csv(file_path)
# 将日期时间转换为datetime类型
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])
# M1提取日期
df['date_only'] = ___________________
# M2提取小时
df['hour'] = ___________________
# 处理异常值
# pct_change字段异常处理
df['pct_change'] = pd.to_numeric(df['pct_change'], errors='coerce').fillna(0)
return df
except FileNotFoundError:
print("错误:找不到CSV文件,请确保数据文件在正确路径下。")
return None
except Exception as e:
print(f"发生未知错误:{e}")
return None
def feature_engineering_1(df):
"""特征1:指数在不同时间段的平均涨跌幅"""
print("\n开始构建特征1:指数在不同时间段的平均涨跌幅")
# 将一天划分为早盘/午盘/收盘前
def time_period(hour):
if 9 <= hour < 11:
return 'morning'
elif 11 <= hour < 14:
return 'noon'
else:
return 'afternoon'
df['time_period'] = df['hour'].apply(time_period)
# M3计算指数在每个时间段的平均涨跌幅,可多行代码段实现
period_index_change = ___________________
_________________________________________
_________________________________________
print(f"计算了 {len(period_index_change)} 个指数×日期的平均涨跌幅")
print(f"平均涨跌幅: {period_index_change['avg_pct_change'].mean():.4f}")
return df, period_index_change
def feature_engineering_2(df):
"""特征2:板块 × 市场阶段的历史涨跌概率"""
print("\n开始构建特征2:板块 × 市场阶段的历史涨跌概率")
# 计算涨跌概率
df['up'] = (df['pct_change'] > 0).astype(int)
# M4 计算不同板块的指数在不同市场阶段的平均涨跌幅,可多行代码段实现
sector_phase_probs = ___________________
_________________________________________
_________________________________________
print(f"计算了 {len(sector_phase_probs)} 个板块×市场阶段的历史涨跌概率")
print(f"平均涨跌概率: {sector_phase_probs['up_probability'].mean():.4f}")
return df, sector_phase_probs
def feature_engineering_3(df):
"""特征3:指数 × 板块的短期涨跌趋势偏好"""
print("\n开始构建特征3:指数 × 板块的短期涨跌趋势偏好")
# 使用过去5个交易日的涨跌趋势
df['trend_5'] = df.groupby(['index_id'])['pct_change'].rolling(window=5).sum().reset_index(0,drop=True)
# M5 计算不同板块的指数在过去5个交易日的涨跌趋势,可多行代码段实现
index_sector_trend = ___________________
_________________________________________
_________________________________________
print(f"计算了 {len(index_sector_trend)} 个指数×板块的短期涨跌趋势")
print(f"平均趋势值: {index_sector_trend['avg_trend_5'].mean():.4f}")
return df, index_sector_trend
def build_golden_test_set(df):
"""构建黄金测试集并进行偏差检测"""
print("\n开始构建黄金测试集并进行偏差检测...")
df_sorted = df.sort_values('datetime')
# M6 使用TimeSeriesSplit划分训练集和测试集,可多行代码段实现
_________________________________________
_________________________________________
_________________________________________
print(f"训练集样本数: {len(train_data)}, 测试集样本数: {len(test_data)}")
# 偏差分析:不同板块涨跌概率分布
print("\n偏差分析:不同板块涨跌概率")
overall_probs = df.groupby('sector')['up'].mean()
test_probs = test_data.groupby('sector')['up'].mean()
all_sectors = sorted(set(df['sector'].unique()).union(set(test_data['sector'].unique())))
overall_probs = overall_probs.reindex(all_sectors, fill_value=0)
test_probs = test_probs.reindex(all_sectors, fill_value=0)
# M7 KS检验
_________________________________________
print(f"KS检验结果: statistic={ks_stat:.4f}, p-value={ks_p:.4f}")
return train_data, test_data
def main():
"""主函数,执行完整的数据处理流程"""
df = load_and_preprocess_data('2.1.1.csv')
if df is None:
return
# 特征工程
df, period_index_change = feature_engineering_1(df)
df, sector_phase_probs = feature_engineering_2(df)
df, index_sector_trend = feature_engineering_3(df)
# 保存高质量训练集
high_quality_train = df[['index_id','date_only','time_period','pct_change','sector','market_phase']]
high_quality_train.to_csv('high_quality_train_index.csv', index=False)
print("\n高质量训练集已保存为 high_quality_train_index.csv")
# 构建黄金测试集
train_data, test_data = build_golden_test_set(df)
print("\n所有任务已完成!")
if __name__ == "__main__":
main()
下载 B2.ipynbB3 · 35 分钟
物业企业希望改善人工值守出入管理、依赖人工回放的安防监控,以及沟通低效、进度不透明的电话或线下报修。需将门禁、安防、报修与工单三个产品整合为全链路服务。
| 智能产品名称 | 解决的具体问题 | 核心功能(含技术实现) |
|---|---|---|
| 智能门禁系统 | 待填写 | 待填写 |
| 智能安防监控系统 | 待填写 | 待填写 |
| 智能报修与工单系统 | 待填写 | 待填写 |
核对数量要求:3 个产品、3 个量化目标、4 阶段合计 10 周、3 项风险措施、3 类资源、6 个以上流程节点。
| 产品 | 具体问题 | 核心功能与技术 |
|---|---|---|
| 智能门禁 | 人工值守效率低、访客权限难管理 | 授权住户凭证/二维码/卡片核验;访客限时授权;权限校验、开门回执及事件日志 |
| 智能安防监控 | 人工回放不能实时预警 | 视频目标/事件检测,结合区域与时间规则告警;保安复核,关联门禁与事件编号 |
| 智能报修与工单 | 电话报修易遗漏、进度不透明 | 文本分类与设备识别、按技能与位置派单、SLA 超时预警、移动端状态与验收反馈 |
| 阶段 | 周期 | 关键任务 | 责任人 |
|---|---|---|---|
| 调研与设计 | 第 1–2 周 | 基线、用户访谈、数据授权、接口与验收标准 | 项目经理/物业负责人 |
| 开发与联调 | 第 3–5 周 | 安装设备、对接门禁/安防/工单,建立日志和异常处理 | 技术负责人/供应商 |
| 试点与培训 | 第 6–8 周 | 一个小区试运行、员工实操、指标复核和修正 | 试点负责人/培训师 |
| 推广与验收 | 第 9–10 周 | 分批推广、SLA 验收、回退演练、运维交接 | 项目经理/运维负责人 |
| 资源 | 具体内容 | 验证 |
|---|---|---|
| 人力 | 项目经理、接口工程师、物业带教、保安与维修代表 | 责任表签字、排班和联系人确认 |
| 物力 | 门禁控制器、摄像设备、网络、工单终端、备份电源 | 设备台账、联网联调和断网/断电演练 |
| 财力 | 采购、集成、培训、运维预算及风险预留 | 预算审批、合同及到款/付款节点核对 |
便捷性:凭证自助通行、手机报修与在线验收,减少到岗亭或电话反复沟通。实时性:门禁、告警和工单使用同一事件链,状态及时同步并可追溯;异常网络情况下由人工处理并补录。
B4 · 15 分钟
作为人工智能训练师二级人员,为三级/高级工及以下人员开展智能家居控制系统培训。
课程安排应说明目标、时长、内容、实践与评价。让“数据分析—行为建模—效果评估—策略优化”形成连贯实践。
| 时间 | 类型 | 内容 | 教学与考核 |
|---|---|---|---|
| 第 1 天 09:00–10:30 | 知识 | 系统架构、设备与网关、控制协议 | 讲解+设备链路识别练习 |
| 第 1 天 10:45–12:15 | 知识 | 数据字段、用户授权、脱敏与异常数据 | 案例辨析+字段口径小测 |
| 第 1 天 13:30–15:00 | 技术 | 设备接入、场景规则、动作回执 | 讲师示范+学员独立配置 |
| 第 1 天 15:15–16:45 | 技术 | 故障定位、离线与重复事件处理 | 故障模拟+排查清单 |
| 第 2 天 09:00–10:30 | 知识/技术 | 数据清洗、时段统计、用户行为特征 | 演示+分组练习 |
| 第 2 天 10:45–12:15 | 技术 | 偏好建模与场景推荐基线 | 案例项目+代码/规则实践 |
| 第 2 天 13:30–15:00 | 技术 | 推荐效果评估与 A/B 设计 | 指标计算+分群错误分析 |
| 第 2 天 15:15–16:45 | 技术 | 优化策略、综合实操与复盘 | 交付小项目+独立评分 |
对象为三级/高级工及以下人员,先做短测确认基础;每组提供设备或模拟环境、脱敏事件数据、操作手册和练习答案。考核目标示例:独立配置一项联动、输出时段分析表、计算推荐指标,并解释至少一个优化建议。
优先掌握“把设备事件数据清洗并转化为可解释的用户行为特征”。字段和时间口径错误会同时影响建模与评估,故应先于复杂模型。
教学方法:教师示范 15 分钟 → 学员用含缺失、重复和乱序的样例独立清洗 30 分钟 → 生成用户×时段使用频率和偏好表 25 分钟 → 同伴复核 10 分钟 → 教师按正确性、可复现性和解释质量反馈 10 分钟。
C · 30 分钟
律所或企业合同管理部门需识别未经授权付款、免责或提前解除等潜在高风险条款。输入合同多为 Word/PDF,题目提供合同 JSON 示例。核心诉求是实时识别、动态更新规则,以及保存标记条款供审计追溯与统计。
{
"contract_id": "CT202401",
"title": "供应合同2024-01",
"parties": [
"公司A",
"公司B"
],
"contract_type": "服务合同",
"clauses": [
{
"clause_id": "CL1001",
"content": "甲方需在签订后30天内支付全款,若未支付,乙方有权终止合同"
},
{
"clause_id": "CL1002",
"content": "本合同受中华人民共和国法律管辖"
},
{
"clause_id": "CL1003",
"content": "合同履行期间,甲方可随时解除合同,无需承担违约责任"
}
],
"timestamp": 1700000000
}需求编号:F-XX 需求描述:技术可实现,必须含配置能力 验收标准:至少 2 条可量化验证方式
保证需求、设计、伪代码、测试互相对应。识别结果需要经过人工复核,并保留条款标识、命中规则及审核记录以支持追溯。
| 编号 | 需求描述(含配置) | 至少两项可量化验收标准 |
|---|---|---|
| F-01 | 合同按条款进行高风险候选识别;可配置启用规则、命中阈值、文本上限与风险级别,输出命中规则及原条款位置 | ①约定环境下,100 条、每条≤1000 字合同的检测 P95≤2 秒;②已标注测试集召回率≥95%、准确率≥90%,分别报告高风险类型 |
| F-02 | 授权管理员可新增/修改/停用关键字规则,配置关键字、类型、级别及生效版本;发布校验,支持回滚 | ①有效规则发布后新请求在 60 秒内使用新版本;②未授权写入 100% 拒绝并留痕,回滚后固定用例结果与原版本一致 |
| F-03 | 持久化标记条款与人工复核结论;可配置诊断日志开关、报表维度及获批的保留期限,必要审计记录始终保存 | ①命中条款的合同号、条款号、规则版本和时间等必填字段完整率 100%;②按合同、类型和审核状态查询统计与固定测试数据一致,重复请求不新增重复标记 |
这些数字是示例验收目标,尚未测量。F-01 的标注集、硬件、负载和统计口径需写入验收协议;关键词规则只是候选筛查,不能代替专业法律判断。
{
"version": "v1",
"keyword_list": [
{"rule_id": "R01", "type": "单方免责", "keywords": ["无需承担违约责任", "不承担任何责任"], "enabled": true, "level": "high"},
{"rule_id": "R02", "type": "提前解除", "keywords": ["可随时解除合同"], "enabled": true, "level": "high"}
],
"enable_logging": true,
"min_hits": 1,
"max_text_chars": 100000,
"review_required": true
}enable_logging 控制诊断日志,不关闭题目要求的标记保存和必要审计。删除/停用规则采用版本记录,避免过去报告失去依据。
按合同类型、风险类型、时间、业务部门和审核状态汇总;“风险合同数”按 contract_id 去重,“风险条款数”按条款/有效结果去重。展示待审核与确认风险的区别,记录谁在何时使用哪版规则作了何种操作,导出只允许授权人员并保留导出审计。
function detect_high_risk(clause, config):
validate clause_id and content; reject invalid or oversized text
text = normalize Unicode and whitespace(clause.content)
hits = []
for rule in config.keyword_list:
if not rule.enabled: continue
matched = [k for k in rule.keywords if normalize(k) in text]
if matched: hits.append({rule_id, type, level, matched})
return {candidate: len(hits) >= config.min_hits,
clause_id: clause.clause_id, hits: hits,
rule_version: config.version}
function mark_clause(contract_id, detection, store, config):
if not detection.candidate: return
key = (contract_id, detection.clause_id, detection.rule_version)
atomically upsert pending_review record by key
with clause reference, hits, rule_version, detected_at
append mandatory audit event (actor, action, timestamp, record_id)
if config.enable_logging:
write optional diagnostic log without full sensitive text
return record_id
function finish_review(record_id, decision, reason, reviewer):
validate reviewer role and allowed decision
atomically update review state and append audit event
generate report from latest reviewed records
| 类型 | 目标与测试数据 | 预期结果 |
|---|---|---|
| 边界值 | 空 clauses、空文本、缺失 clause_id;长度为上限、上限+1;min_hits=1;重复合同与版本 | 合法空条款列表产生空结果;非法字段/超限拒绝并说明;恰好一条有效命中可标记;重复请求不重复保存 |
| 关键词覆盖 | 逐条覆盖 R01/R02;CL1003 含“可随时解除合同”“无需承担违约责任”;CL1002 普通管辖条款;停用规则、空关键字、否定语境 | CL1003 产生两类候选;CL1002 不命中所列规则;停用规则不生效;空关键字拒绝;否定语境作为误报用例并交人工复核 |
| 压力测试 | 在约定设备上以 1/10/50 并发提交固定规模合同,持续 10 分钟并制造突发、超时和数据库异常 | 记录吞吐、P95/P99、错误率与资源;约定负载达 SLA,失败可恢复,无丢标记与越权访问 |
依据题目样例:CL1003 应进入高风险候选;CL1002 无此规则命中;CL1001 是否高风险取决于付款授权与规则配置,不应只看到“付款”就断言违法。关键词匹配有漏检/误检,应保留人工复核。
提交与检查
所有技能操作和综合评审题单均要求在桌面创建考生文件夹,按“参赛号/模块代码”存放作答文件;同时按考试平台规程录入所有作答结果,并最终提交。
| 模块 | 时间 | 需保存的文件 |
|---|---|---|
| B1.1 | 25 分钟 | 答题卷.doc |
| B1.2 | 20 分钟 | B1.2.ipynb、B1.2.html、答题卷.doc |
| B2 | 25 分钟 | B2.html、答题卷.doc;另保存高质量训练集 |
| B3 | 35 分钟 | 答题卷.doc |
| B4 | 15 分钟 | 答题卷.doc |
| C | 30 分钟 | 答题卷.doc |
原始附件
保留全部 13 个有效学习文件:8 份 PDF、2 个 Notebook、3 份 CSV。临时文件不纳入学习资料。
原始填空框架与附件保留不变,以下是单独提供的非官方参考实现。
B1.2 参考代码B1.2 参考 Notebook(含输出)B1.2 完整运行结果B2 参考代码B2 参考 Notebook(含输出)B2 完整运行结果