本篇介绍了Sklearn机器学习基础,从Sklearn的简介,模块以及与tensorflow的优劣势对比来了解基于Python语言的机器学习工具。
01、Sklearn简介
sklearn(scikit-learn)是Python重要的学习库,它封装了机器学习中常用的算法,包括监督学习、非监督学习等,包括分类、回归、降维和聚类四大机器学习算法,还包含特征提取、数据处理和模型评估三大模块。sklearn建立在NumPy和matplotlib库的基础上。利用这几大模块的优势,可以大大提高机器学习的效率。sklearn拥有着完善的文档,上手容易,具有着丰富的API,在学术界颇受欢迎。sklearn已经封装了大量的机器学习算法,可以简单高效的数据挖掘和数据分析。sklearn可供大家使用,可在各种环境中重复使用。sklearn开放源码,可商业使用 - BSD license。这样,就给了我们无限的想像。sklearn工具功能强大,我们可以从这些方法中挑选适合自己的,去解决自己的问题。02、Sklearn中常用模块
sklearn中常用的模块有分类、回归、聚类、降维、模型选择、预处理。具体介绍下图所示:分类 (Classification)
from sklearn import Some Classifier
from sklearn.linear_model import Some Classifier
from sklearn.ensemble import Some Classifier
回归 (Regression)
from sklearn import Some Regressor
from sklearn.linear_model import Some Regressor
from sklearn.ensemble import Some Regressor
聚类 (Clustering)
from sklearn.cluster import Some Model
降维 (Dimensionality Reduction)
from sklearn.decomposition import Some Model
模型选择 (Model Selection)
from sklearn.model_selection import Some Model
预处理 (Preprocessing)
from sklearn.preprocessing import Some Model
03、sklearn与tensorflow优劣势
这两个有什么区别,我想,可以从以下这方面来做对比:
1、面对项目的不同,sklearn更适合中小型,特别是数据量不大的项目,此时更需要手动者对数据进行处理,并且选择合适模型的项目,这些计算是可以在CPU直接计算的,没有什么硬件要求。相对的,tf的应用领域上,往往更加注重数据量较大,一般情况下需要GPU进行加速运算。目前很多公司并没有很大量的数据,在选择上,可以作为参考。
2、易用性及封装度上,sklearn更高,这点上,我想很多用过的人都清楚,不做累赘描述。
3、sklearn主要定位是一种通用的机器学习的学习库,tf主要定位还是深度学习。
4、特征工程上,sklearn提供了例如维度压缩、特征选择等,但是这样子并不代表这tf就比sklearn弱。在传统的机器学习中,sklearn需要使用者自行对数据进行数据处理,例如进行特征选择,维度压缩,转换格式等,但是tf可以在开始进行数据训练的过程中,自行从数据中提取有效的特征,从而减少人为的干预。
机器学习的基本方法为:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测(分类)。1、获取数据与数据预处理
scikit-learn提供了一些标准数据集,例如用于分类的iris和digits数据集和波士顿房价回归数据集。在下文中,我们从我们的shell启动一个Python解释器,然后加载iris和digits数据集。使用的工具是jupyter,单步调试利器,建议大家练习时优先考虑该工具。数据集形式根据问题实际情况,有不同的形式,比如文本挖掘常用.txt格式数据集,图像处理常用.png,分类常用数字。是一个类似字典的对象,它保存有关数据的所有数据和一些元数据。该数据存储在 .data 成员中,它是n_samples, n_features数组。在监督问题的情况下,一个或多个响应变量存储在 .target 成员中。例如,在数字数据集的情况下,digits.data 使我们能够得到一些用于分类的样本特征,
而数据的标签(digits.target )表示了数据集内每个数字的真实类别,也就是我们期望从每个手写数字图像中学得的相应的数字标记。
2、训练模型
在数字数据集的情况下,任务是给出图像来预测其表示的数字。我们给出了10个可能类(数字 0 到 9)中的每一个的样本,我们在这些类上拟合一个估计器,以便能够预测未知的样本所属的类。
在scikit-learn中,分类的估计器是一个Python 对象,它实现了fit(X, y)和predict(T) 等方法。
估计器的一个例子类sklearn.svm.SVC ,实现了支持向量分类。估计器的构造函数以相应模型的参数为参数,但目前我们将把估计器视为黑箱即可;
3、模型预测与评估通过数据和模型,下面要做的就是使用模型来处理数据。
在下面的代码中,我们把我们的估计器实例命名为clf ,因为它是一个分类器(classifier)。它现在必须拟合模型,也就是说,它必须从模型中 learn(学习)。这是通过将我们的训练集传递给fit方法来完成的。作为一个训练集,让我们使用数据集中除最后一张以外的所有图像。我们用 [:-1] ,这个Python 语法选择这个训练集,它产生一个包含 digits.data 中除最后一个条目(entry)之外的所有条目的新数组。
由此可看出,模型的最终参数是有多个参数共同确定,但实际情况往往只关注只要参数,也就是,控制变量法,因为,机器学习学习是一个逼近全局最优过程,性能没有最好,只有更好,所以为节省训练时间,多关注主要参数。
4、预测现在你可以预测新的值,特别是我们可以向分类器询问 digits 数据集中最后一个图像(没有用来训练的一条实例)的数字是什么。
转载|职坐标
END
往期精选
用python写个简单但实用的人脸识别系统
python如何实现可视化热力图
使用pandas做数据可视化
整理了25个Pandas实用技巧
Python 四大数据类型总结
关注雷课
学习干货