师:上节课我们认识了Python库,利用内置的random库实现随机问题编程,还了解了turtle库并用它绘画。这些都是内置库,若有需要,也能使用第三方库。本节课我们将了解第三方库的安装方法、分析大数据的一般过程,以及机器学习的KNN算法和简单应用。在开始学习前,请同学们先观察计算机认识水果的过程。

  这是一段Python程序,输入水果重量160克,表皮类型为“粗糙”,识别结果为橙子。继续识别,输入水果重量135克,表皮类型为“光滑”,识别结果为苹果。这与我们日常认知相符。

  这是怎么做到的呢?同学们先想想小时候是怎么认识水果的。首先,爸爸妈妈给我们看一种水果,告诉我们这是什么水果,再给我们看另一种水果并告知名称,这个过程就是收集数据,收集各种水果的数据。见得多了,脑袋里就有了各种水果的样子,这就是建立模型。依据记忆中水果的样子,也就是水果模型,我们就能认识、判断各种水果,这是用模型判断识别水果的过程。这其实也是大数据分析的一般过程,这个过程能否在计算机上实现呢?能,就像我们刚才看到的。接下来学习如何让计算机通过学习数据识别水果。

  按照认识水果的过程,第一步先收集数据,为训练模型做准备。收集水果的特征和类别数据,建立水果分类表。为方便计算机处理,把分类表中的数据分别表示成Python代码列表,其中features列表记录水果属性特征数据,每一条数据包含重量和果皮材质两项属性;Labels列表记录水果类别标签数据。注意,两个列表中的数据要和表格中的数据对应顺序一致,以保证训练数据的准确性。这里数据较少,实际中数据可能很多。为方便程序计算,还需把代码中的文字抽象化变成数字。在特征属性数据列表中,用1表示光滑,用0表示粗糙;在类别标签数据列表中,用0表示苹果,用1表示橙子。通过这个过程简化前面收集的数据,至此完成第一步收集数据,接下来就可以用它训练模型了。

  在计算机开始学习训练模型前,需导入用于机器学习的第三方程序库,Python默认安装没有这个库,使用前要先安装。方法是以管理员身份运行命令提示符,在命令行窗口执行相应命令。安装第三方Python库的命令格式是:pip install库名。用于机器学习的第三方程序库名称为scikit - learn,所以安装命令为:pip install scikit - learn。安装后就可编写程序训练模型和用模型识别水果了。

  在开始编写程序训练模型前,先来了解范例程序代码各部分的含义,注意左侧红色数字的行号标记。通过上节课学习,使用库前要先导入,所以程序第一行是从机器学习的第三方程序库sklearn库中导入neighbors,即KNN分析模型。注意,第三方机器学习程序库的导入名称是sklearn。程序第二、三行是准备好的训练数据列表,即属性数据features列表和标签数据labels列表。程序第4行调用Labels的KNN分析模型,注意其中的k值为3。程序第5行用准备好的数据训练模型,训练好模型后,就能用它识别判断新水果了。所以程序第6行用print语句打印输出判断数据160,0的结果,即重160克、粗糙的水果,识别判断结果正不正确,试一下才知道。请同学们观看完整过程。

  我们来安装用于机器学习的第三方库。打开开始菜单,找到所有程序,点开附件中的命令提示符,在命令提示符上右键,选择以管理员身份运行。在打开的命令提示符窗口输入安装指令:pip install scikit - learn,然后回车,请耐心等待安装开始。计算机需要一定时间下载和安装这个库。

  第三方库安装完成后,就可调用它编写程序。打开开始菜单所有程序,找到Python目录,点击打开IDLE编辑器。在打开的窗口选择file菜单下的new file,建立新的空白文档。输入刚才讨论的代码,点击file菜单的save选项,将文件保存到指定目录。

  接下来运行程序检验结果。要识别的水果是重160克、表皮粗糙的水果。点击run菜单下的run MODULE,或按键盘F5键开始运行程序,输出结果为1,表明识别结果为橙子,这与预先设定的条件吻合。同学们可以自己试试,测试时可适当调整水果重量和表皮类型,看看结果是否正确。

  生:老师,我修改了识别对象的属性,结果程序识别错了,输入的是苹果的数据,识别结果却是橙子,为什么呢?

  师:小姚同学你好,为回答你的问题,我们先来了解一下KNN算法。这是一种基本的分类与回归算法,本质是让输入与给定的数据集进行距离计算,如果最近的点大部分为某一类,比如是A,则判定为A类,其中的k就是跟输入距离最近点的数量。KNN是一种特殊算法,通过把测试数据与训练集进行距离计算就可预测结果。如果训练集数据规模和质量合适,结果会更准确。在上面例子中,训练数据集里一共有5组水果属性数据,其中有3组标签为1,即有3个是橙子。老师注意到你的程序中k值为空,这时k会取默认值5。当k值为5时,程序会检查与待测数据相近的5个邻居的标签,5个邻居中有3个是橙子,所以识别结果总是橙子。这时就要考虑调整k值,使程序适应训练数据的特点。例如在范例中,当待测数据为160,0,k值为3的时候,程序找到与待测数据接近的三组数据,分别是150,0、170,0、168,0,它们都是橙子,所以识别结果为橙子。如果待测数据变化,有可能出现接近的三组数据中苹果较多,这时识别结果就会变化。老师建议你将k值调整为3试试。如果数据更复杂,这个方法是否可行呢?这里收集好了一份学生成绩数据表,表中有学生成绩,还有是否达到三好学生成绩要求的判定,0表示不达标,1表示达标,能否让计算机通过学习这份数据,学会预测和判断其他学生成绩是否达标,我们来试一试。

>> 点击阅读全文
《8年级下册信息技术 第6节 用Python分析大数据 逐字稿-4,630字 第5版》.docx
将本文下载保存,方便收藏和打印
导出文档