开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践: Sklearn 机器学习包 上】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15516
Sklearn 机器学习包 上
本课程主要讲解使用python 实现数据挖掘的实验部分、sklearn 机器学习包的介绍。本节实验课所使用的工具为Anaconda Jupyter Notebook,此需要同学们事先进行安装及配置。
下载地址及进行配置的方法视频已经放置在第一章内容里,根据视频完成操作即可使用。
本节课讲解Sklearn 机器学习包,故在正式讲课之前,需要确保在电脑上已经安装成功:可以输入 import sklearn 进行运行,运行成功则说明安装包已存在,则无需进行安装;若出现报错,则可根据报错信息进行调整。
在超星平台的第三章里,提前放置了上课时所需要的课件,可以对此下载后放置到notebook 目录下方就可以对此页面进行浏览及操作。在安装及使用过程中,若出现问题,可以在网上进行检索解决方法,若还是未能解决,可以及时向助教进行反映及沟通。
本次课程主要内容为sklearn 机器学习包的介绍,此包虽然基础但十分重要,它能够为用户提供各种机器学习的算法接口,可以让用户可以更加简单、高效的进行数据挖掘和数据分析的工作。而且sklearn中内置大量的数据集,此能够节省获取数据集的时间,对于数据挖掘课程的学习是有极大帮助的。
之前已经学习过机器学习的基础概念,机器学习是自动从数据中提取知识的过程,通常是为了预测新的、未知类别的数据。一个典型的例子是垃圾邮件过滤器,用户对垃圾邮件进行标记,然后机器学习算法从区分正常邮件与垃圾邮件的数据中°学习"预测模型,该模型可以预测新电子邮件是否是垃圾邮件。以下为机器学习的流程:
使用训练数据及训练数据的标签进行构建一个模型,再运用模型预测没有标签的测试数据,最后根据测试数据的真实标签评估模型效果。
本次课程需要讨论的机器学习算法主要分成两类:监督算法及无监督算法,两者的本质区别在于训练数据是否有小外标签,有标签的为监督学习。
例如分类模型及回归模型都属于监督学习算法,但两者的区别在于分类模型的标签是离散的,例如将垃圾分为垃圾邮件及无垃圾邮件,最后的分类结果就为这两类。而回归模型的算法是连续的,例如通过父母的身高预测子女的身高时,此身高是一个连续的值,在一米至两米之间都存在可能性,以上内容都为监督学习算法的内容。无监智学习是在无监督学习中没有与数据相关的所需输出,即没有小外标签,相反,要从给定的数据中提取某种形式的知识或模型,故从某种意义上说,可以将无监督学习看作是从数据本身发现标签的手段,无监督学习往往难以理解和评估。
目前为止,已经讲解介绍了机器学习的定义、分类及sklearn 包,接下来举例对包进行操作。
使用的示例为著名的 Iris 数据集,里面提供了鸢尾花的四种特征:萼片长度、萼片宽度、花瓣长度及花瓣宽度,根据此四种特征即可判断鸢尾花的类型,在开始实践之前,需要了解sklearn 所提供的数据格式,除了少量的例外,其余数据都为二维数组的形状,形状为n_samples及 n_features ,samples 代表样本数量,而features 代表特征数量,理解示例之后会对概念更加清晰。接下来进行实践,详情如下:
首先需要导入数据,sklearn 提供了三种数据,分别为load、fetch及make,load 表示数据在电脑上已经安装成功,fetch 表示需要从网上下载数据,make 则表示需要自己生成数据,此示例选择为load,因为在安装sklearn 包时,数据集已经下载在电脑中,若感兴趣可以查找这些数据的存储位置。
生成的数据集是一个堆栈的对象,可以通过tape 检查类型,此处的bunch 代表复合类型。为了能够更加清晰的理解,再对整个数据集进行打印,详情如下:
大概浏览一下,可以看出其实为字典的格式,故对此进行查看键的类型:
通过.keys 就可以进行查询键的类型,首先第一个diet 是一个矩阵,存储的内容的为鸢尾花的四种特征数据,形状为150×4的矩阵,150代表样本的数量,4代表鸢尾花的四个特征,同样也可以打印第一朵鸢尾花的四个特征值,此处为0而不是1;而第二个target 存储内容为每一条记录鸢尾花对应的类别。故此可以看出数据中有三类鸢尾花,分别是零类、一类及二类。
若要检测三种样本是否均匀分布,可以通过import 的bincount 的一个函数进行查看,结果为:第零类为50个,第二类为50个,第三类也为50个,说明是均匀分布的,同时也可以使用其他方法进行检测查看三类数据是否均匀分布。因为鸢尾花数据有四个特征,因此diet 中的数据是四维的。
可以通过一个简单的直方图对维度之间的关系进行可视化,首先选择对一个维度的数据matplotlib inline 进行可视化,可以观察以上代码, matplotlib inline 代表图形是显示在界面中,而无需其他的对话框。观察以上代码可得,选择的为第三列的数据,在实际学习过程中也可以选择其他列的数据,颜色代表最终直方图呈现的三种颜色,分别是蓝色、红色及绿色,需要注意的是拉链函数zip ,对此进行分析,首先从里往外进行观察,target_names 为三个,之前的讲解中也有提到,长度为三,range 三表示零、一、二,零、一、二与colors 放置在一起,最终呈现的效果:
零代表blue,一代表red ,二代表green ,意思为在最终直方图的呈现上蓝色代表鸢尾花的类别0,而red 代表类别一,green 代表类别二,从图中可以看出,从三类数据来看,第一类数据界限清楚,而第二类及第三类有一部分的重叠数据,接下来选择两个维度的数据进行格式化,过程与以上一致,希望能够掌握函数的用法。
从图中可以看出,第一类数据界限清楚,第二类数据与第三类数据有所重叠,说明第二类及第三类鸢尾花在某种程度上特别相似,因此难以区分,但是第一类的特征比较明显。