开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践: Sklearn 机器学习包 中】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15517
Sklearn 机器学习包 中
上节课通过鸢尾花数据集学习了Sklearn 数据格式化部分,Sklearn 中包含了三类数据,分别是load、fetch 及make,接下来讲解此三类数据中包含的其他数据。
Python 学习有一个小技巧,因为python 中有很多函数,若想要完全记住是几乎不可能实现的,因此可以采用以下方法进行辅助学习。
首先需要导入整个Sklearn 的数据集,若想要查看make 数据集类型,可以通过datasets.make_再按下tab 键, 若直接运行则会报错,但若按下tab 键则会显示make 后缀的类型,make 类型的所有数据都能显示出来,再对需要的类型进行挑选后即可使用。值得注意的是,tab 键是需要在上一步已经运行的情况下使用才能生效,若上一步没有运行,则不会显示所有的类型。
上一节课程已经介绍了机器学习的流程,比较清楚的一点是机器学习需要训练集进行训练模型,需要测试集进行测试整个模型的效果,因此需要了解Sklearn 是如何划分训练集及测试集的,此为本节课程的主要内容。
接下来讲解代码的具体呈现,此示例使用的仍为鸢尾花的数据集,此处的X为鸢尾花的四种特征数据,是一个150×4的矩阵,而y 指它的类型,展开y 后,发现前五十类都为零类,中间五十个属于一类,而最后五十个属于二类,若要执行一个十分常见的三比二的训练数据、三比一的测试数据进行划分,则训练集就只包含零类及一类,二测试集则只包含二类,这样显然是错误的。
故此在划分训练集和测试集时,往往对数据进行重新打乱、均匀分配,Sklearn 有一个可以将数据划分为训练集及测试集的函数,为train_test_split 函数,名字的含义为划分训练集与测试集。
需要注意的是,在划分训练集及测试集时,需要将X与y 一起划分,X 为鸢尾花的特征,y 为鸢尾花的类别,故此划分为四个数据,分别为训练集X、训练集y 、测试集X及测试集y ,此示例采用50%进行划分的,但在具体实现的时候也能选用不同的比例。
此处的random_state=123,意思为随机数种子,因为在训练模型时,为了模型的效果会进行训练多次,但是为了每次训练集与测试集划分的不同以及对模型效果带来的影响,故设置一个随机数种子。若在两次训练模型之前设置的随机数种子是一致的,此处的123就能够保证两次划分的训练集与测试集相同,实际上123不是固定的数值,在实践过程中选择012或者023都是可以的,然后就可以使用训练集的X 和y 进行训练一个kg0算法,导入的内容详情如下:
训练算法的详情如下:
接下来使用测试集的X 与y 评估模型效果,最后结果可以得到模型的准确率达到94.6%,效果还是十分理想的。
同样还可以查看预测正确及预测错误的数值,以此进行修正数据,提高模型的准确率。
以上内容就是通过一个简单的鸢尾花示例,简单了解了Sklearn 的数据格式、数据格式化、训练集与测试集的划分。对Sklearn 有了一个简单的认识,接下来将从模型及算法的部分深入认识Sklearn 机器学习包。