数据科学引论-Python之道 第9课机器学习 一、概述 今天我们来学习有关机器学习的知识。首先,我们先来看两个例子,第一个 是snapchat,.这是一款由斯坦福的大学生开发的社交类的APP,用户通过这个 APP可以互相分享照片,在接收到发送过来的照片之后,还可以做一些像面部识 别的事情,以此来实现一些比较有趣的功能。例如,揭示照片中人物的心情到底 是高兴还是沮丧。照片被阅读之后会被自动地销毁掉,这是一款非常出名的阅后 即焚的应用。第二个例子是微软的Kbox Kinect,这是一种动作捕捉的外设,它 捕捉了我们的动作之后,可以将我们的动作融入到游戏中去,从而提高了游戏者 的用户体验。这两个例子都频繁或者深度地使用了机器学习技术。在整个数据分 析的过程中,无论是在分析方法的选择还是在业务建模这两个步骤的哪一个,都 可以深度地使用或者是选择机器学习方法。 机器学习主要的分析方法和算法罗列如下: 第一是关联分析,也就是要找到数据集之间的频繁共现项,以此来发现数据 集之间的关联关系,常用的有Apriori关联规则这样的算法。 第二是分类,也就是要对数据集进行分类,例如,我们在事物类别预测上可 以用到这样的方法,具体的算法有各种各样的决策树、分类回归树、支持向量机、 神经网络、朴素贝叶斯和卡方自动交叉检验等。 第三是评估预测方法,例如用来预测连续值的各种各样的回归算法、支持向 量机和K近邻算法。 第四是聚类,也就是将数据集划分成若干个等价类,使得在这些聚集好的类
数据科学引论-P瀌瀇濻瀂瀁 之道 第 9 课 机器学习 一、概述 今天我们来学习有关机器学习的知识。首先,我们先来看两个例子,第一个 是 瀆瀁濴瀃濶濻濴瀇,这是一款由斯坦福的大学生开发的社交类的 APP,用户通过这个 APP 可以互相分享照片,在接收到发送过来的照片之后,还可以做一些像面部识 别的事情,以此来实现一些比较有趣的功能。例如,揭示照片中人物的心情到底 是高兴还是沮丧。照片被阅读之后会被自动地销毁掉,这是一款非常出名的阅后 即焚的应用。第二个例子是微软的 X濵瀂瀋 K濼瀁濸濶瀇,这是一种动作捕捉的外设,它 捕捉了我们的动作之后,可以将我们的动作融入到游戏中去,从而提高了游戏者 的用户体验。这两个例子都频繁或者深度地使用了机器学习技术。在整个数据分 析的过程中,无论是在分析方法的选择还是在业务建模这两个步骤的哪一个,都 可以深度地使用或者是选择机器学习方法。 机器学习主要的分析方法和算法罗列如下: 第一是关联分析,也就是要找到数据集之间的频繁共现项,以此来发现数据 集之间的关联关系,常用的有 A瀃瀅濼瀂瀅濼 关联规则这样的算法。 第二是分类,也就是要对数据集进行分类,例如,我们在事物类别预测上可 以用到这样的方法,具体的算法有各种各样的决策树、分类回归树、支持向量机、 神经网络、朴素贝叶斯和卡方自动交叉检验等。 第三是评估预测方法,例如用来预测连续值的各种各样的回归算法、支持向 量机和 K 近邻算法。 第四是聚类,也就是将数据集划分成若干个等价类,使得在这些聚集好的类
的内部的数据彼此之间比较相似,而类之间的数据差异比较大,常用的算法有K 均值和分层聚类方法。 第五是序列模式挖掘,就是按照时间发生的顺序对一系列的事件进行挖掘, 例如,我们想分析某个网页或者是某个视频被浏览和观看的模型,常用的算法有 马尔可夫模型和隐马尔可夫模型。 第六是降维,当问题特别复杂时,我们是难以对其进行处理的,所以我们希 望通过降维来降低问题的复杂性,从而解决问题,主要使用的方法有主成分分析。 第七是可视化,就像我们前面课中所提到的,数据可视化之后,可以方便人 们对数据的理解,更容易产生对数据的洞察。 第八是概括,也就是对数据集产生概括性的描述。之前我们提到的在 DataFrame上调用describe方法就可以得到所有数值型列的统计数据,包括最 大值、最小值、平均值、中位值等等。 第九是偏差检测,也就要找到一系列数据集中的数据变点,例如,在拟合一 条符合正关联或负关联的直线时,我们总会发现有一些点会远离这条直线,这些 点就属于变点。 最后是链接或者是图分析。如果把节点之间的链接关系画出来也是一张图, 所以它们本质是一样的,就是通过对图的分析来发现一些数据之间的关联关系。 机器学习领域非常广泛,本节课将挑选其中几种加以描述,并通过notebook 让大家掌握在Python框架下如何使用它们。 二、预测 下面让我们来看看预测方法。我们举一个例子,假设我们想根据一辆汽车的 各项技术指标来预测它的二氧化碳的排放量,那么我们该怎么做呢?
的内部的数据彼此之间比较相似,而类之间的数据差异比较大,常用的算法有 K 均值和分层聚类方法。 第五是序列模式挖掘,就是按照时间发生的顺序对一系列的事件进行挖掘, 例如,我们想分析某个网页或者是某个视频被浏览和观看的模型,常用的算法有 马尔可夫模型和隐马尔可夫模型。 第六是降维,当问题特别复杂时,我们是难以对其进行处理的,所以我们希 望通过降维来降低问题的复杂性,从而解决问题,主要使用的方法有主成分分析。 第七是可视化,就像我们前面课中所提到的,数据可视化之后,可以方便人 们对数据的理解,更容易产生对数据的洞察。 第八是概括,也就是对数据集产生概括性的描述。之前我们提到的在 D濴瀇濴F瀅濴瀀濸 上调用 濷濸瀆濶瀅濼濵濸 方法就可以得到所有数值型列的统计数据,包括最 大值、最小值、平均值、中位值等等。 第九是偏差检测,也就要找到一系列数据集中的数据变点,例如,在拟合一 条符合正关联或负关联的直线时,我们总会发现有一些点会远离这条直线,这些 点就属于变点。 最后是链接或者是图分析。如果把节点之间的链接关系画出来也是一张图, 所以它们本质是一样的,就是通过对图的分析来发现一些数据之间的关联关系。 机器学习领域非常广泛,本节课将挑选其中几种加以描述,并通过 瀁瀂瀇濸濵瀂瀂濾 让大家掌握在 P瀌瀇濻瀂瀁 框架下如何使用它们。 二、预测 下面让我们来看看预测方法。我们举一个例子,假设我们想根据一辆汽车的 各项技术指标来预测它的二氧化碳的排放量,那么我们该怎么做呢?
我们可以收集以往车型的技术指标和二氧化碳的排放量,然后找到它们之间 的内在关系,构建出相应的模型,通过这个模型我们就可以来预测未来车型的二 氧化碳的排放量。我们抽取收集到的历史数据当中的几列来看一看,包括发动机 的大小、气缸数、百公里综合油耗和二氧化碳的排放量,我们会发现前三列与发 动机相关的技术指标与二氧化碳排放量之间存在着正相关的关系,所以我们认为 一辆汽车的二氧化碳的排放量和发动机的相关指数是存在着关联关系的。 cdf=df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS'] cdf.head() ENGINESIZE CYLINDERS FUELCONSUMPTION COMBCO2EMISSIONS 02.0 4 8.5 196 12.4 4 9.6 221 21.5 4 5.9 136 33.5 6 11.1 255 43.5 6 10.6 244 所以我们面临的问题是什么?就是当一辆汽车被设计出来,但是还没有被制 造出来的时候,我们能不能在不经过实际的实车测试的情况下就能够预测出来, 这辆汽车未来可能的二氧化碳的排放量,这样我们就可以判断这个设计方案是否 能够符合国家的相应的排放标准。显然这不是一个很容易解决的问题,但是我们 刚才已经提到了一个方案,就是我们要去计算二氧化碳排放量和发动机的各种技 术指标,包括排量、类型、模式、气缸数、油耗等之间的关系,通过计算出来的 关系模型来预测未来车型的二氧化碳的排放量。 什么是预测?预测就是要对连续的、数值型的、有序的值进行建模。例如在 上面的例子中,我们收集到了很多历史数据,也就是包括了以往车型的发动机的 指标以及它们的二氧化碳的排放量,找到它们互相之间的关系,建立一个模型, 将新车的各项指标作为模型的参数的输入,就可以得到作为输出的这款汽车预估
我们可以收集以往车型的技术指标和二氧化碳的排放量,然后找到它们之间 的内在关系,构建出相应的模型,通过这个模型我们就可以来预测未来车型的二 氧化碳的排放量。我们抽取收集到的历史数据当中的几列来看一看,包括发动机 的大小、气缸数、百公里综合油耗和二氧化碳的排放量,我们会发现前三列与发 动机相关的技术指标与二氧化碳排放量之间存在着正相关的关系,所以我们认为 一辆汽车的二氧化碳的排放量和发动机的相关指数是存在着关联关系的。 所以我们面临的问题是什么?就是当一辆汽车被设计出来,但是还没有被制 造出来的时候,我们能不能在不经过实际的实车测试的情况下就能够预测出来, 这辆汽车未来可能的二氧化碳的排放量,这样我们就可以判断这个设计方案是否 能够符合国家的相应的排放标准。显然这不是一个很容易解决的问题,但是我们 刚才已经提到了一个方案,就是我们要去计算二氧化碳排放量和发动机的各种技 术指标,包括排量、类型、模式、气缸数、油耗等之间的关系,通过计算出来的 关系模型来预测未来车型的二氧化碳的排放量。 什么是预测?预测就是要对连续的、数值型的、有序的值进行建模。例如在 上面的例子中,我们收集到了很多历史数据,也就是包括了以往车型的发动机的 指标以及它们的二氧化碳的排放量,找到它们互相之间的关系,建立一个模型, 将新车的各项指标作为模型的参数的输入,就可以得到作为输出的这款汽车预估
的二氧化碳的排放量。 历史数据:以往车型的发动机 的排量、类型、模式、汽缸 油耗、CO2排放量等 模型 New Car Expected Co2 怎么来做预测呢?做预测通常要遵循下面的步骤:首先,我们要把收集到的 数据分为训练集和测试集两部分,其中训练集要占到整个数据集的80%左右,剩 下的是测试集。我们先用训练集来训练模型,得到了模型之后用测试集对它进行 评估。通过评估之后,这个模型就可以用来对未来的值进行预测。所以我们看到 在下面的数据集中,棕色的这一列表示我们要预测的二氧化碳的排放量,所以它 被称为目标列。所有跟目标列相关的其他列,包括发动机的汽缸数、发动机的大 小、百公里综合油耗等等都被称为特征列。所有的数据集分成80%的数据构成的 训练集以及剩下的20%的数据构成的测试集,或者叫评估集,评估之后就可以对 未来的值进行预测。 特征 目标 Cylinder Engine Cons C02 Size 3 3 112 1 4 1 … 125 训练集 1 2 2 … 101 3 3 108 3 4 1 … 105 2 2 102 测试/评估集 2 3 3 121 1 2 4 2 预测集 这是在Python上创建训练集和测试集的脚本。它取出整个数据集的总长度
的二氧化碳的排放量。 怎么来做预测呢?做预测通常要遵循下面的步骤:首先,我们要把收集到的 数据分为训练集和测试集两部分,其中训练集要占到整个数据集的 80%左右,剩 下的是测试集。我们先用训练集来训练模型,得到了模型之后用测试集对它进行 评估。通过评估之后,这个模型就可以用来对未来的值进行预测。所以我们看到 在下面的数据集中,棕色的这一列表示我们要预测的二氧化碳的排放量,所以它 被称为目标列。所有跟目标列相关的其他列,包括发动机的汽缸数、发动机的大 小、百公里综合油耗等等都被称为特征列。所有的数据集分成 80%的数据构成的 训练集以及剩下的 20%的数据构成的测试集,或者叫评估集,评估之后就可以对 未来的值进行预测。 这是在P瀌瀇濻瀂瀁上创建训练集和测试集的脚本。它取出整个数据集的总长度
创建一个小于这个总长度0.8的随机数,实际上这个值会非常接近0.8,然后拿 这个值作为百分比,获取整个汽车数据中80%的数据作为训练集,剩下的数据就 是测试集。在真正进行预测的时候,我们可以用到的算法有很多选择,首先是回 归分析,然后是K近邻方法、神经网络和支持向量机。 Creating train and test dataset msk np.random.rand(len(df))<0.8 train cdf[msk] test cdf[-msk] 我们将重点关注回归分析。在回归分析中,根据自变量的数量多少,我们又 可以分为简单回归和多元回归。根据构建出来的模型的类型,又可以分为线性回 归和非线性回归。 所谓简单回归,就是指我们要预测的值只和单个的自变量相关。例如,我们 认为二氧化碳的排放量和汽车的大小相关,并且只和汽车大小相关。这时,我们 就可以使用到简单回归。这时预测的因变量就是二氧化碳的排放量,而自变量就 是发动机的大小。如果我们认为二氧化碳的排放量和发动机的大小之外的其他变 量也存在着关联,那么就要使用到多元回归,此时因变量仍然是二氧化碳的排放 量,但自变量就包含了发动机的尺寸、发动机的缸数等等其他的多个因素。所以 我们看什么是回归分析?回归分析就是要找到一个变量与其他变量之间的关系, 也就是说我们认为一个变量是依赖于其他变量的,如果这个被依赖的变量也就是 自变量只有一个,就是我们所谓的简单回归分析,如果自变量有多个,那就是多 元回归分析。回归分析的应用场景很多,包括市场销量的预测,心理学上的满意 度分析等等。 简单线性模型是最简单的一类回归分析模型,它的目标值预期是输入变量的
创建一个小于这个总长度 0.8 的随机数,实际上这个值会非常接近 0.8,然后拿 这个值作为百分比,获取整个汽车数据中 80%的数据作为训练集,剩下的数据就 是测试集。在真正进行预测的时候,我们可以用到的算法有很多选择,首先是回 归分析,然后是 K 近邻方法、神经网络和支持向量机。 我们将重点关注回归分析。在回归分析中,根据自变量的数量多少,我们又 可以分为简单回归和多元回归。根据构建出来的模型的类型,又可以分为线性回 归和非线性回归。 所谓简单回归,就是指我们要预测的值只和单个的自变量相关。例如,我们 认为二氧化碳的排放量和汽车的大小相关,并且只和汽车大小相关。这时,我们 就可以使用到简单回归。这时预测的因变量就是二氧化碳的排放量,而自变量就 是发动机的大小。如果我们认为二氧化碳的排放量和发动机的大小之外的其他变 量也存在着关联,那么就要使用到多元回归,此时因变量仍然是二氧化碳的排放 量,但自变量就包含了发动机的尺寸、发动机的缸数等等其他的多个因素。所以 我们看什么是回归分析?回归分析就是要找到一个变量与其他变量之间的关系, 也就是说我们认为一个变量是依赖于其他变量的,如果这个被依赖的变量也就是 自变量只有一个,就是我们所谓的简单回归分析,如果自变量有多个,那就是多 元回归分析。回归分析的应用场景很多,包括市场销量的预测,心理学上的满意 度分析等等。 简单线性模型是最简单的一类回归分析模型,它的目标值预期是输入变量的