版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教案续页(2-E1)授课主题状态空间搜索策略实验I教学时数2所属章节第二章状态空间搜索课次6授课方式理论课(线下为主□线上线下混合□)实验课(√)习题课()研讨课()一、教学内容分析1.教学目标:知识、能力、素养知识目标:1)掌握A*算法启发函数设计、分析及编程实现方法;2)掌握算法实验分析和实验报告撰写的基本方法;3)熟悉Python语言的基本编程方法。能力目标:1)具备针对具体问题进行A*算法启发函数设计和分析的能力;2)提升实践能力,能够开展简单的算法仿真实验并撰写实验报告。素养目标:1)通过h函数的设计和分析实验,让学员切实领会A*算法的精髓,感受算法之美,激发学员对人工智能学习兴趣;2)通过课程实验,培养学员独立思考、动手实践的意识,增强学员的自信心和成就感。2.教学重点和难点项目内容教学重点1)A*算法启发式函数的设计及编程实现教学难点1)迷宫问题的状态空间表示;2)扩展节点数的计算方法。3.思政元素及军事案例思政元素无军事案例无二、课堂设计1.教学分析及总体思路本讲为线下实验课。这是本课程第一次实验课,通过前期的学情分析发现,部分学员编程基础相对较差,动手能力不足。因此,此次实验由教员提供基本的算法代码框架,由学员补全/修改其中的关键功能模块,以降低实验难度。课前
阶段需要给学员明确实验准备要求,如提前准备好实验所需的笔记本电脑,并预先配置好开发环境,预装PyCharm软件,提前熟悉Python语言应用方法。课中
阶段实验开始前,首先由教员介绍实验目的、实验方法、实验中需要注意的主要问题以及实验最终提交的成果及完成时间要求等。实验过程中,需要实时掌握学员的实验进展情况,针对存在的问题与困难进行现场指导,特别是针对实验过程中存在的共性问题,适时进行说明和指导。课后
阶段通过雨课堂发布试卷形式,要求在规定时间内,学员通过雨课堂提交实验报告和程序。2.板书设计教室共4块黑板(白板),左侧两块为书写本节知识点列表及其关系,长期保留;右侧两块用于课堂随笔,随用随擦。左侧板书的示意图如下:3.教学基本内容及手段教学内容教学手段1)课前实验准备实验课前,提前发布实验题目、示范代码及实验要求,提醒学员做好实验准备工作,主要包括:(1)自带笔记本电脑,提前安装PyCharm软件,并熟悉其使用;(2)提前熟悉老师提供的图搜索示范代码;(3)复习A*算法相关内容(特别是h函数设计)。通过雨课堂提前1-2天发布。2)实验任务布置(1)实验任务实验内容:要求在老师提供的图搜索算法基础上,补全基于A*算法的迷宫问题求解程序。迷宫问题如下图所示,要求搜索从出发点s到目标点e的不与障碍物发生碰撞的路径。(2)实验要求阅读迷宫的搜索程序代码,了解算法流程;修改GraphRepresention.py文件中的expand函数,根据上移规则,完善其他移动规则;修改GraphRepresention.py文件中的h_function函数,定义可纳的启发函数(至少2种);统计不同h函数对应的总扩展节点数,并对结果进行对比分析;在课堂上完成代码修改,并提交修改后的代码和实验报告。(3)程序分析程序结构状态空间表示节点描述:位置:state(r,c)代价:g,h,fValue指针:father初始状态:state(sr,sc)目标状态:state(objr,objc)操作符表示在这个迷宫问题中,操作符一共有四个,分别是上、下、左、右移动。算法流程算法总体流程可以概括为选、判、扩、移、排。重复节点处理在程序执行过程中,关于对重复节点的判断,分为三种情况,如果新发现的节点的评估值大于已经存在的节点的评估值,直接舍弃新节点如果新发现的节点的评估值小于。重复节点处理过程中不仅要处理OPEN表,还要处理CLOSED表。启发函数设计在A算法中,如果对所有的节点n,满足h(n)≤h*(n),则该算法称为A*算法,即最佳图搜索算法。对于可以沿对角线行走的迷宫问题,重新设计h函数。假如要估计节点n到G的路径的代价值,如何设计这样的h函数,还要保证这个估计值一定小于实际的最优值呢?已知两点之间直线最短,如果把h函数设计为n与目标节点的直线距离长度,即h1(n)QUOTE是不是就轻易保证了h(n)小于等于h*(n)?另外,在这个迷宫问题中,只有上下左右4个移动方向,如果把h函数设计为n与目标节点在x与y方向上的坐标差的和,即h2(n)=|xG-xn|+|yG-yn|,是不是也可以保证h(n)小于等于h*(n)?八联通情况下不能用h2(n),因为不满足A*条件,这时可以加一个=QUOTE,其中QUOTE=|xG聽-聽xn|,QUOTE=QUOTE|。路径回溯一般思路:从CLOSED表的末尾节点按照指针一直找到初始节点。介绍实验内容,明确基本要求,PPT演示+板书,用时约5分钟。进一步进行详细实验分析,PPT演示,用时约20分钟。针对迷宫问题介绍状态空间表示方法及代码实现。简单回顾A算法搜索策略及流程。针对迷宫问题,介绍重复节点处理方法。回顾A*算法定义启发式教学。引导学员思考如何根据问题的特点设计不同h函数。介绍获取路径的示范代码。3)实验实施明确实验内容和实验任务后,学员开始编程实验,教员现场指导和答疑。指导过程中,需要注意以下几个方面:针对学员实验过程中存在的问题,调动学员的主动能动性,引导学员积极思考;针对实验过程中可能存在的共性问题,进行集体讲解,提高效率。提醒学员把握时间进度,尽量按要求在课堂上完成实验内容。跟进学员实验情况,随堂提供指导,用时约65分钟。4.习题、思考题无教案续页(2-E2)授课主题状态空间搜索——博弈算法实验教学时数2所属章节第二章状态空间搜索策略课次6授课方式理论课(线下为主□线上线下混合□)实验课(√)习题课()研讨课()一、教学内容分析1.教学目标:知识、能力、素养知识目标:1)掌握极小极大搜索算法、α-β剪枝法的设计、分析及编程实现方法;2)掌握算法实验分析和实验报告撰写的基本方法;3)熟悉Python常用库功能及基本编程方法。能力目标:1)具备针对具体问题进行α-β剪枝算法设计实现和分析的能力;2)提升实践能力,能够开展基本的算法仿真实验并撰写实验报告。素养目标:1)通过α-β剪枝的设计和分析实验,并通过比较不同深度及是否剪枝情况下的扩展节点数,让学员切实领会α-β剪枝算法的精髓,感受算法之美,激发学员对人工智能学习兴趣;2)通过课程实验,培养学员独立思考、动手实践的习惯,并增强学员的自信心和成就感。2.教学重点和难点项目内容教学重点1)α-β剪枝算法的设计及编程实现教学难点1)极小极大搜索算法的实现;2)棋局静态评估函数的设计。3.思政元素及军事案例思政元素1)通过α-β剪枝的设计和分析实验,并通过比较不同深度及是否剪枝情况下的扩展节点数,让学员切实领会α-β剪枝算法的精髓,感受算法之美,激发学员对人工智能学习兴趣;2)通过课程实验,培养学员独立思考、动手实践的习惯,并增强学员的自信心和成就感。军事案例无二、课堂设计1.教学分析及总体思路本讲为线下实验课,为第二章状态空间搜索策略的第二次实验。本讲内容主要要求在极小极大搜索算法和α-β剪枝算法理论学习的基础上,结合五子棋程序,进行α-β剪枝算法的编程实现,以加深对极小极大搜索算法和α-β剪枝算法的理解,锻炼动手编程能力。结合实验课的特点,本次课按照课前实验准备、实验讲解、实验实施和实验总结等几个主要环节来组织。课前
阶段通过雨课堂等形式发布实验内容及要求,重点要求学员做好实验准备工作。课中
阶段实验讲解:实验前详细介绍实验内容、实验要求,并进行实验分析;实验实施:安排开展编程实验,教员提供随堂指导与答疑,在学员基本掌握实验原理和设计方法后,未完成的实验内容留作课后完成,并按照模板撰写实验报告。课后
阶段通过雨课堂发布试卷形式,要求在规定时间内,学员通过雨课堂提交实验报告和程序。2.板书设计教室共4块黑板(白板),左侧两块为书写本节知识点列表及其关系,长期保留;右侧两块用于课堂随笔,随用随擦。左侧板书的示意图如下:3.教学基本内容及手段教学内容教学手段1)课前实验准备实验课前,提前发布实验题目、内容及要求,提醒学员做好实验准备工作,主要包括:自带笔记本电脑,提前安装Python(推荐3.7及以上版本)、代码编辑器PyCharmCommunityEdition软件,安装Pygame库;熟悉Python面向对象编程(类、对象、继承等),熟悉列表、枚举、函数递归等基础语法;理解五子棋基本规则,掌握不同棋型的定义与评估标准;复习极小极大搜索算法和α-β剪枝算法相关理论课内容。通过雨课堂提前1-2天发布。2)实验任务布置(1)实验内容及要求实验内容:理解五子棋极小极大搜索算法的代码实现,测试五子棋程序实现效果;在极小极大搜索算法的基础上实现α-β剪枝,以提高博弈程序搜索效率;比较不同深度及是否剪枝情况下的程序运算时间(节点扩展数)。实验要求:读懂代码,描述博弈搜索过程,画流程图;完成代码修改,实现α-β剪枝,提交修改后代码及实验报告(电子文档)。(2)实验分析基于极小极大搜索算法和α-β剪枝算法,分析博弈问题的基本流程,比较不同深度及是否剪枝情况下的扩展节点数的差别。五子棋博弈问题基本流程载入初始棋盘,规定白方和黑方进入循环根据鼠标位置下一个黑子,更新棋局;如果黑方取胜,则退出循环;利用极小极大搜索算法得到最佳走步;扩展最佳走步,下一个白子,更新棋局;如果白方取胜,则退出循环;程序结束博弈程序可以分解为以下函数棋局显示函数根据极小极大搜索算法获得最佳走步的函数走步扩展函数棋局静态评估函数节点的状态表示节点对应的棋局矩阵节点的所属方(MAX或MIN)节点所在的深度节点的评估值节点的扩展规则如果棋格位置为空且周围有棋子,那么下一个棋子可以按照棋局状态考虑扩展顺序对应的示范代码如下:defgenmove(self,board,turn):fives=[]mfours,ofours=[],[]msfours,osfours=[],[]ifturn==MAP_ENTRY_TYPE.MAP_PLAYER_ONE:mine=1opponent=2else:mine=2opponent=1moves=[]radius=1foryinrange(self.len):forxinrange(self.len):#hasNeighbor判断空位置radius范围内是否有已下的棋子,是true,否falseifboard[y][x]==0andself.hasNeighbor(board,x,y,radius):score=self.pos_score[y][x]#棋盘上每个位置设一个初始分数.越靠近棋盘中心,分数越高moves.append((score,x,y))moves.sort(reverse=True)#按倒序排列returnmoves静态评估函数的设计回顾井字棋的静态评估函数设计思路1)对MAX方来说,若P是取胜棋局,f(P)=+∞2)对MIN方来说,若P是取胜棋局,f(P)=-∞3)假设任何一方都尚未取胜f(P)=(能使MAX成三子一线的行、列和对角线数)–(能使MIN成三子一线的行、列和对角线数)五子棋的静态评估函数考虑棋局的行、列、对角线中能连成5子的数目,连成1子、2子、3子、4子、5子时需对应不同的权重。对应的示范代码如下:#根据棋盘上黑棋和白棋的棋型统计信息count,按照一定规则进行评分FIXME:MayBeImproveddefgetScore(self,mine_count,opponent_count):mscore,oscore=0,0ifmine_count[FIVE]>0:#连5,得分10000return(SCORE_FIVE,0)ifopponent_count[FIVE]>0:return(0,SCORE_FIVE)ifmine_count[SFOUR]>=2:#自己两个冲四可以当成一个活四mine_count[FOUR]+=1ifopponent_count[SFOUR]>=2:#对手两个冲四可以当成一个活四opponent_count[FOUR]+=1ifmine_count[FOUR]>0:#自己活四,得分9050return(9050,0)ifmine_count[SFOUR]>0:#自己冲四,得分9040return(9040,0)ifopponent_count[FOUR]>0:#对手活四9030return(0,9030)ifopponent_count[SFOUR]>0andopponent_count[THREE]>0:#对手冲四和活三,9020return(0,9020)ifmine_count[THREE]>0andopponent_count[SFOUR]==0:#对手没有冲四且自己有活三,9010return(9010,0)if(opponent_count[THREE]>1andmine_count[THREE]==0andmine_count[STHREE]==0):#对手有2个活三且自己没有活三或眠三,9000return(0,9000)ifopponent_count[SFOUR]>0:#对手有冲四,加400oscore+=400ifmine_count[THREE]>1:#自己有1个活三,加100,1个以上加500mscore+=500elifmine_count[THREE]>0:mscore+=100ifopponent_count[THREE]>1:#对手有1个活三,加400,1个以上加2000oscore+=2000elifopponent_count[THREE]>0:oscore+=400ifmine_count[STHREE]>0:#有眠三,每个加10mscore+=mine_count[STHREE]*10ifopponent_count[STHREE]>0:oscore+=opponent_count[STHREE]*10ifmine_count[TWO]>0:#有活二,每个加6mscore+=mine_count[TWO]*6ifopponent_count[TWO]>0:oscore+=opponent_count[TWO]*6ifmine_count[STWO]>0:#有眠二,每个加2mscore+=mine_count[STWO]*2ifopponent_count[STWO]>0:oscore+=opponent_count[STWO]*2return(mscore,oscore)#评估方法,根据turn决定的mine(表示自己棋的值)和oppoent(表示对手棋的值,下一步棋由对手下),checkWin是游戏用来判断是否有一方获胜了defevaluate(self,board,turn,checkWin=False):self.reset()ifturn==MAP_ENTRY_TYPE.MAP_PLAYER_ONE:mine=1opponent=2else:mine=2opponent=1#遍历棋盘上的每个点,则对这个点所在四个方向形成的四条线分别进行评估,返回各个模型count,foryinrange(self.len):forxinrange(self.len):ifboard[y][x]==mine:self.evaluatePoint(board,x,y,mine,opponent)elifboard[y][x]==opponent:self.evaluatePoint(board,x,y,opponent,mine)mine_count=self.count[mine-1]opponent_count=self.count[opponent-1]ifcheckWin:returnmine_count[FIVE]>0else:#根据棋盘上黑棋和白棋的棋型统计信息count,按照一定规则进行评分mscore,oscore=self.getScore(mine_count,opponent_count)return(mscore-oscore)极小极大搜索算法实现生成规定深度的全部博弈树,计算所有最底层节点的静态估计函数值;自底向上逐层计算非终结节点的倒推估计值:对于MAX层节点,取其所有子节点的最大值;对于MIN层节点,取其所有子节点的最小值。对应的示范代码如下:defminimax(self,board,turn,depth,isMaximizer):ifdepth<=0:#达到搜索深度,则返回评估值scorescore=self.evaluate(board,turn)#评估棋盘returnscore#获取棋盘上所有的空点movesmoves=self.genmove(board,turn)bestmove=Noneself.alpha+=len(moves)#如果没有空点,返回评估值iflen(moves)==0:score=self.evaluate(board,turn)returnscoreifisMaximizer:#max层,初始设置为最小值,保证更新best=SCORE_MINelse:#min层,初始设置为最大值,保证更新best=SCORE_MAXfor_,x,yinmoves:board[y][x]=turn#玩家和AI轮流ifturn==MAP_ENTRY_TYPE.MAP_PLAYER_ONE:op_turn=MAP_ENTRY_TYPE.MAP_PLAYER_TWOelse:op_turn=MAP_ENTRY_TYPE.MAP_PLAYER_ONEifisMaximizer:#当前是max层,下一层是min层score=self.minimax(board,op_turn,depth-1,False)board[y][x]=0#复原,用于搜索下一棋盘self.belta+=1ifscore>best:best=scorebestmove=(x,y)else:#当前是min层,下一层是max层score=self.minimax(board,op_turn,depth-1,True)board[y][x]=0#复原,用于搜索下一棋盘self.belta+=1ifscore<best:best=scorebestmove=(x,y)ifdepth==self.maxdepthandbestmove:self.bestmove=bestmovereturnbestα-β剪枝规则α剪枝当任何MIN节点的β值≤它的父辈MAX节点的α值,则中止该MIN节点以下的搜索;β值即为该节点的最终倒推值。β剪枝当任何MAX节点的α值≥它的父辈MIN节点β值时,则中止该MAX节点以下的搜索;α值即为该节点的最终倒推值。对应的示范代码如下:defminimax_alphabeta(self,board,turn,depth,alpha,beta,isMaximizer):ifdepth<=0:#达到搜索深度,则返回评估值scorescore=self.evaluate(board,turn)#评估棋盘returnscore#获取棋盘上radium范围内的空点movesmoves=self.genmove(board,turn)bestmove=Noneself.alpha+=len(moves)#如果没有空点,返回评估值iflen(moves)==0:score=self.evaluate(board,turn)returnscoreifisMaximizer:#max层,初始设置为最小值,保证更新best_val=SCORE_MINelse:#min层,初始设置为最大值,保证更新best_val=SCORE_MAXfor_,x,yinmoves:board[y][x]=turn#玩家和AI轮流ifturn==MAP_ENTRY_TYPE.MAP_PLAYER_ONE:op_turn=MAP_ENTRY_TYPE.MAP_PLAYER_TWOelse:op_turn=MAP_ENTRY_TYPE.MAP_PLAYER_ONEifisMaximizer:#当前是max层,下一层是min层score=self.minimax_alphabeta(board,op_turn,depth-1,alpha,beta,False)board[y][x]=0#复原,用于搜索下一棋盘self.belta+=1ifscore>best_val:best_val=scorebestmove=(x,y)ifbest_val>=beta:#max层减枝returnbest_valalpha=max(alpha,best_val)else:#当前是min层,下一层是max层score=self.minimax_alphabeta(board,op_turn,depth-1,alpha,beta,True)board[y][x]=0#复原,用于搜索下一棋盘self.belta+=1ifscore<best_val:best_val=scorebestmove=(x,y)ifbest_val<=alpha:#min层减枝returnbest_valbeta=min(beta,best_val)ifdepth==self.maxdepthandbestmove:self.bestmove=bestmovereturnbest_valPPT演示+板书,介绍实验目的和实验内容,明确基本要求,用时约5分钟。进一步详细介绍实验的问题描述、算法基本流程、代码实现的关键要点等。用时约20分钟。节点扩展规则的代码示范。静态评估函数设计的代码示范。极小极大搜索算法实现的代码示范。α-β剪枝规则的代码示范。实验实施明确实验内容和实验任务后,学员开始编程实验,教员现场指导和答疑。指导过程中,需要注意以下几个方面:实验过程中,针对学员在实验中出现的问题进行个别指导,针对共性问题进行集体讲解。引导学员针对实验中发现的问题,积极主动的通过资料调研、同学之间的交流研讨等方式解决,培养学员解决问题的能力和基本科研素养。实验课内未完成的实验内容,安排学员在课后完成,注意明确时间节点和提交成果要求。实验过程中教员提供现场指导和答疑,用时65分钟。4.习题、思考题进一步完成实验内容,鼓励学员尝试解决博弈问题的多种算法,不断提高机器博弈水平。
教案续页(4-E)授课主题机器学习实验教学时数2所属章节第四章机器学习课次15授课方式理论课(线下为主□线上线下混合□)实验课(√)习题课()研讨课()一、教学内容分析1.教学目标:知识、能力、素养知识目标:1)了解常用的视觉图像特征提取算法;2)理解SVM、KNN、K-means等典型算法思想;3)学会使用sklearn库,包括一般机器学习过程、数据库、常用属性与功能等。能力目标:1)初步具备利用典型机器学习算法求解问题的能力;2)提高分析问题和解决问题的能力。素养目标:1)培养学员从事科学问题研究的基本科研素养;2)培养学员脚踏实地的工作作风和动手实践的良好习惯。2.教学重点和难点项目内容教学重点1)图像分类识别问题的解决思路;2)机器学习工具箱的函数介绍。教学难点1)图像分类识别问题机器学习算法构建;2)基于sklearn库的机器学习算法参数调优。3.思政元素及军事案例思政元素无军事案例飞机和战车两类军事目标的识别。二、课堂设计1.教学分析及总体思路本讲为机器学习线下实验课,主要是通过实验了解常用的视觉图像特征提取算法,进一步深化理解SVM、KNN、K-means等典型算法思想,学会使用sklearn库,了解机器学习一般过程、数据库、常用属性与功能等。课前
阶段通过雨课堂等形式发布实验内容及要求,重点要求学员做好实验准备工作。课中
阶段讲授内容:介绍实验内容及要求,明确本次实验课需要完成的实验内容及基本要求;介绍视觉图像的特征提取基本原理和算法,使学员更好的理解实验原理;介绍本次实验涉及的机器学习算法及代码实现Python库实现方法。实验环节:阅读示例中视觉图像分类的程序代码;动手构建并测试模型,观察不同分类算法的分类效果;通过修改算法参数,观察实验结果的变化,并测试自选图片所属类别。课后
阶段通过雨课堂发布试卷形式,要求在规定时间内,学员通过雨课堂提交实验报告和程序。2.板书设计教室共4块黑板(白板),左侧两块为书写本节知识点列表及其关系,长期保留;右侧两块用于课堂随笔,随用随擦。左侧板书的示意图如下:3.教学基本内容及手段教学内容教学手段1)课前实验准备实验课前,提前发布实验题目、内容及要求,提醒学员做好实验准备工作,主要包括:(1)上课时自带笔记本电脑,预装Python软件和机器学习库,提前熟悉Python语言和机器学习库的应用方法。(2)复习机器学习相关理论课内容。通过雨课堂提前1-2天发布。2)实验任务布置(1)实验内容及要求实验内容:利用Python库进行目标分类。包括:阅读示例中视觉图像分类的程序代码;构建并测试模型,观察不同分类算法的分类效果。由于军事目标识别的真实任务比较复杂。在这里把实验简化,只做装甲车辆与军用飞机的视觉图像二分类问题。实验要求:在课堂上完成代码阅读和修改;一周内提交修改后代码以及实验报告。(2)视觉图像的特征提取算法介绍重点介绍基于领域知识的特征提取方法:①通道特征RGB通道:最常用的颜色通道,计算简便。HSV通道:色调反映颜色值,饱和度反映颜色浓度,亮度反映光照;HSV通道中的饱和度信息在特征识别中往往有比较重要的作用。②轮廓特征计算物体的周长、面积、质心、最小外接矩形等。如果将像素坐标看成是二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,因此可以用矩阵来描述灰度图像的特征。③点特征基本思想:用一个特征向量集来描述图像中的局部特征点;特征向量具有平移、缩放、旋转不变性,同时对光照变化、仿射及投影变换也有一定不变性。在一定程度上能够解决以下问题:目标的旋转、缩放、平移;图像仿射/投影变换;光照影响;目标遮挡;杂物场景;噪声。灰度直方图是一种全局特征,全局特征对图像的旋转,尺度平移变化敏感,比如通道特征和轮廓特征通常是全局的。图像局部特征空间则对平移、旋转、尺度和其它一些图像参数是不变的,比如点特征和纹理特征。对于图中的玩具汽车,希望在发生摄像角度变化后、玩具汽车尺度变化后,计算机程序依然能够识别它,这就需要提取局部不变特征。主要应用:目标识别、机器人定位与导航、图像拼接、三维建模、视频跟踪、笔记鉴定、指纹与人脸识别等。④纹理特征HoG特征:HistogramofOrientedGradient(梯度方向直方图)梯度幅值的计算:梯度方向的计算:HOG特征首先将图像分成很多小的连通区域,称为细胞单元,然后采集细胞单元中各像素点的梯度和边缘方向,得到梯度方向分布直方图,梯度方向可取0度到180度或0度~360度;将这个梯度分布平均分成个方向角度(orientationbins),每个方向角度范围都会对应一个直方柱,代表像素个数。HoG特征的应用非常广泛,如行人检测、车辆检测、场景目标分类等。坦克车辆与军用飞机的图片和特征示例:(3)常用机器学习算法常用机器学习算法主要包括经典机器学习算法和深度神经网络;经典机器学习算法又有很多种方法,如SVM,KNN,K-means等。分类算法紧随特征提取算法之后,其流程如下:①SVM代码实现采用Python中sklearn函数进行SVM训练,sklearn是机器学习领域当中最知名的python模块之一。Sklearn包含了很多种机器学习的方式:Classification分类Regression回归Clustering非监督分类Dimensionalityreduction数据降维ModelSelection模型选择Preprocessing数据预处理代码示例:#Authors:Thescikit-learndevelopers#SPDX-License-Identifier:BSD-3-Clauseimportmatplotlib.pyplotaspltfromsklearnimportdatasets,svmfromsklearn.inspectionimportDecisionBoundaryDisplay#importsomedatatoplaywithiris=datasets.load_iris()#Takethefirsttwofeatures.Wecouldavoidthisbyusingatwo-dimdatasetX=iris.data[:,:2]y=iris.target#wecreateaninstanceofSVMandfitoutdata.Wedonotscaleour#datasincewewanttoplotthesupportvectorsC=1.0#SVMregularizationparametermodels=(svm.SVC(kernel="linear",C=C),svm.LinearSVC(C=C,max_iter=10000),svm.SVC(kernel="rbf",gamma=0.7,C=C),svm.SVC(kernel="poly",degree=3,gamma="auto",C=C),)models=(clf.fit(X,y)forclfinmodels)#titlefortheplotstitles=("SVCwithlinearkernel","LinearSVC(linearkernel)","SVCwithRBFkernel","SVCwithpolynomial(degree3)kernel",)#Set-up2x2gridforplotting.fig,sub=plt.subplots(2,2)plt.subplots_adjust(wspace=0.4,hspace=0.4)X0,X1=X[:,0],X[:,1]forclf,title,axinzip(models,titles,sub.flatten()):disp=DecisionBoundaryDisplay.from_estimator(clf,X,response_method="predict",cmap=plt.cm.coolwarm,alpha=0.8,ax=ax,xlabel=iris.feature_names[0],ylabel=iris.feature_names[1],)ax.scatter(X0,X1,c=y,cmap=plt.cm.coolwarm,s=20,edgecolors="k")ax.set_xticks(())ax.set_yticks(())ax.set_title(title)plt.show();运行结果如下:②KNN采用sklearnB中KNeighborsClassifier。在iris数据集上训练分类器,并观察获得的关于参数权重的决策边界的差异。加载数据#在此示例中,使用iris数据集。将数据拆分为训练和测试数据集。fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitiris=load_iris(as_frame=True)X=iris.data[["sepallength(cm)","sepalwidth(cm)"]]y=iris.targetX_train,X_test,y_train,y_test=train_test_split(X,y,stratify=y,random_state=0)K-nearestneighborsclassifierK最近邻分类器#使用k最近邻分类器,考虑11个数据的邻域点。由于k近邻模型使用欧几里得距离来查找,提前缩放数据非常重要。因此,在使用分类器之前,使用Pipeline来链接scaler。fromsklearn.neighborsimportKNeighborsClassifierfromsklearn.pipelineimportPipelinefromsklearn.preprocessingimportStandardScalerclf=Pipeline(steps=[("scaler",StandardScaler()),("knn",KNeighborsClassifier(n_neighbors=11))])决策边界#用不同的参数值拟合两个分类器weights的Weights。我们绘制每个分类器的决策边界以及原始数据集以观察差异。importmatplotlib.pyplotaspltfromsklearn.inspectionimportDecisionBoundaryDisplay_,axs=plt.subplots(ncols=2,figsize=(12,5))forax,weightsinzip(axs,("uniform","distance")):clf.set_params(knn__weights=weights).fit(X_train,y_train)disp=DecisionBoundaryDisplay.from_estimator(clf,X_test,response_method="predict",plot_method="pcolormesh",xlabel=iris.feature_names[0],ylabel=iris.feature_names[1],shading="auto",alpha=0.5,ax=ax,)scatter=disp.ax_.scatter(X.iloc[:,0],X.iloc[:,1],c=y,edgecolors="k")disp.ax_.legend(scatter.legend_elements()[0],iris.target_names,loc="lowerleft",title="Classes",)_=disp.ax_.set_title(f"3-Classclassification\n(k={clf[-1].n_neighbors},weights={weights!r})")plt.show()。运行结果如下:③决策树绘制根据iris数据集的特征对训练的决策树的决策面。有关估算器的更多信息,请参阅决策树。对于每对iris特征,决策树学习由从训练样本推断的简单阈值规则组合组成的决策边界。显示基于所有特征构建的模型的树结构。首先加载scikit-learn附带的Iris数据集的副本:fromsklearn.datasetsimportload_irisiris=load_iris()Display
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年辽宁省盖州市高二生物下册期末考试考试卷附参考答案【模拟题】
- 2026年幼儿园中班企鹅找朋友课件
- 2026年幼儿园防暑降温小常识
- 2025年浙江省龙泉市高二生物下册期末考试考试卷及参考答案【基础题】
- 2026年广东省陆丰市高二生物下册期末考试模拟卷附完整答案【历年真题】
- 2026年幼儿园教育公司简介
- 2025年河南省新郑市高二生物下册期末考试模拟卷完美版附答案
- 2026年云南省开远市高二生物下册期末考试试卷附参考答案(培优)
- 2026年广东省台山市高二生物下册期末考试检测卷含答案(培优A卷)
- 2026年幼儿园传染病要预防课件
- 2025年食品营销题库及答案
- 水处理班组安全培训
- 厂房迁移合同注意事项汇编
- 患者标本转运培训
- 2025年初中地生会考模拟试题及答案
- 2025年市场营销学课程期末考试试题及答案
- 2025年防雷检测专业技术人员能力认定考试复习题库(附答案)
- 工程总承包项目费用管控方案
- 2025年中国专精特新企业发展洞察报告
- 锐器伤不良事件上报流程
- 2025年广西壮族自治区文化和旅游厅直属事业单位招聘考试笔试试题(附答案)
评论
0/150
提交评论