Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代)、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略
目录
scikit-learn的简介
1、scikit-learn的实现组件
2、scikit-learn的发展历史
scikit-learn的基本功能—六大部分
1、数据预处理
(1)、sklearn.preprcessing数据预处理包介绍
2、数据降维
3、模型选择
(1)、估计器Estimator、转换器Transformer介绍
(2)、流水线Pipeline包介绍
4、分类
5、回归
6、聚类
scikit-learn的安装
1、安装前的准备以及安装方法
2、测试scikit-learn是否安装成功
scikit-learn的使用方法
1、如何选择最合适的模型算法
scikit-learn的简介scikit-learn,scikits.learn,也称为sklearn,是针对Python 编程语言的免费软件机器学习库。scikit-learn项目最早由数据科学家 David Cournapeau 在 2007 年发起,需要NumPy和SciPy等其他包的支持,旨在与Python数值科学库NumPy和SciPy联合使用,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。 scikit-learn,是机器学习和数据挖掘中的一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。scikit-learn的特点如下:
- 用于预测数据分析的简单高效工具
- 每个人都可以访问,并且可以在各种情况下重复使用
- 基于 NumPy、SciPy 和 matplotlib 构建
- 开源,商业可用 - BSD 许可证
scikit-learn依托于Numpy、Scipy等几种工具包,封装大量经典以及最新的机器学习模型。该接口最早由David Cournapeau在2007年Google夏季代码节中提出并启动。后来作为Matthieu Brucher博士工作的一部分得以延续和完善。现在已经是相对成熟的机器学习开源项目。 近十年来,有超过20位计算机专家参与其代码的更新和维护工作。作为一款用于机器学习和实践的Python第只方开源程序库,scikit-learn因其出色的接口设计和高效的学习能力,尤其受ML爱好者的欢迎。 和其他众多的开源项目一样,scikit-learn目前主要由社区成员自发进行维护。可能是由于维护成本的限制,scikit-learn相比其他项目要显得更为保守。这主要体现在两个方面:
- 一是scikit-learn从来不做除机器学习领域之外的其他扩展;
- 二是scikit-learn从来不采用未经广泛验证的算法。
官方文档:User guide: contents — scikit-learn 1.2.dev0 documentation
1、scikit-learn的实现组件scikit-learn主要是用Python编写的,并且广泛使用numpy进行高性能的线性代数和数组运算。此外,用Cython编写了一些核心算法来提高性能。支持向量机由围绕LIBSVM的Cython包装器实现 ; 逻辑回归和线性支持向量机的相似包装围绕LIBLINEAR。scikit-learn与许多其他Python库很好地集成在一起,例如matplotlib和plotly用于绘图,numpy用于数组矢量化,pandas数据帧,scipy等。
2、scikit-learn的发展历史scikit-learn项目始于scikits.learn,这是David Cournapeau的Google Summer of Code项目。它的名称源于它是“ SciKit”(SciPy工具包)的概念,它是SciPy的独立开发和分布式第三方扩展。原始代码库后来被其他开发人员重写。 scikit-learn最初由David Cournapeau 于2007年在Google的夏季代码项目中开发。后来Matthieu Brucher加入该项目,并开始将其用作论文工作的一部分。2010年,法国计算机科学与自动化研究所INRIA参与其中,并于2010年1月下旬发布了第一个公开版本(v0.1 beta)。
scikit-learn版本
发布日期
主要特点
scikit-learn 0.14
2013年8月
内容较多,请参考官网链接
scikit-learn 0.15
2014年7月
内容较多,请参考官网链接
scikit-learn 0.16
2015年3月
内容较多,请参考官网链接
scikit-learn 0.17
2015年11月
内容较多,请参考官网链接scikit-learn 0.18
2016年9月
内容较多,请参考官网链接scikit-learn 0.19
2017年7月
内容较多,请参考官网链接scikit-learn 0.20
2018年9月
内容较多,请参考官网链接scikit-learn 0.21
2019年5月
内容较多,请参考官网链接scikit-learn 0.22
2019年12月
内容较多,请参考官网链接
scikit-learn 0.23
2020年5月
内容较多,请参考官网链接
scikit-learn 0.24
2020年12月
内容较多,请参考官网链接
scikit-learn 1.0
2021年 9 月
scikit-learn 1.0.0 版需要 python 3.7+、numpy 1.14.6+ 和 scipy 1.1.0+。可选的最小依赖是 matplotlib 2.2.2+。
scikit-learn 1.1
2022年 5 月
内容较多,请参考官网链接
scikit-learn 1.2
In Development
官方版本更新简介:Release History — scikit-learn 1.2.dev0 documentation
scikit-learn的基本功能—六大部分scikit-learn的基本功能主要被分为:数据预处理,数据降维,模型选择,分类,回归,聚类六大部分。 scikit-learn涉及的算法中(分类、回归、聚类算法)包括支持向量机,随机森林,梯度提升,k均值和DBSCAN等等。
1、数据预处理数据预处理,是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的一个环节。这里归一化是指将输入数据转换为具有零均值和单位权方差的新变量,但因为大多数时候都做不到精确等于零,因此会设置一个可接受的范围,一般都要求落在0-1之间。而特征提取是指将文本或图像数据转换为可用于机器学习的数字变量。 需要特别注意的是,这里的特征提取与上文在数据降维中提到的特征选择非常不同。特征选择是指通过去除不变、协变或其他统计上不重要的特征量来改进机器学习的一种方法。 总结来说,scikit-learn实现了一整套用于数据降维,模型选择,特征提取和归一化的完整算法/模块,虽然缺少按步骤操作的参考教程,但scikit-learn针对每个算法和模块都提供了丰富的参考样例和详细的说明文档。
官方链接:6.3. Preprocessing data — scikit-learn 1.2.dev0 documentation
(1)、sklearn.preprcessing数据预处理包介绍规范化
MinMaxScaler :最大最小值规范化
Normalizer :使每条数据各特征值的和为1
StandardScaler :为使各特征的均值为0,方差为1
编码
LabelEncoder :把字符串类型的数据转化为整型
OneHotEncoder :特征用一个二进制数字来表示
Binarizer :为将数值型特征的二值化
MultiLabelBinarizer:多标签二值化
2、数据降维数据降维,是指使用主成分分析(PCA)、非负矩阵分解(NMF)或特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。
官方链接:2.5. Decomposing signals in components (matrix factorization problems) — scikit-learn 1.2.dev0 documentation
3、模型选择模型选择,是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度。目前scikit-learn实现的模块包括:格点搜索,交叉验证和各种针对预测误差评估的度量函数。
官方链接:3. Model selection and evaluation — scikit-learn 1.2.dev0 documentation
(1)、估计器Estimator、转换器Transformer介绍估计器Estimator
很多时候可以直接理解成分类器,主要包含两个函数:
fit():训练算法,设置内部参数。接收训练集和类别两个参数。
predict():预测测试集类别,参数为测试集。
大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。
转换器Transformer
转换器Transformer用于数据预处理和数据转换,主要是三个方法:
fit():训练算法,设置内部参数。
transform():数据转换。
fit_transform():合并fit和transform两个方法。
(2)、流水线Pipeline包介绍流水线Pipeline
sklearn.pipeline包
流水线的功能:跟踪记录各步骤的操作(以方便地重现实验结果)、对各步骤进行一个封装、确保代码的复杂程度不至于超出掌控范围
4、分类分类算法,是指识别给定对象的所属类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等。目前scikit-learn已经实现的算法包括:支持向量机(SVM),最近邻,逻辑回归,随机森林,决策树以及多层感知器(MLP)神经网络等等。 需要指出的是,由于scikit-learn本身不支持深度学习,也不支持GPU加速,因此这里对于MLP的实现并不适合于处理大规模问题。有相关需求的读者可以查看同样对Python有良好支持的Keras和Theano等框架。
官方链接:1. Supervised learning — scikit-learn 1.2.dev0 documentation
5、回归回归算法,是指预测与给定对象相关联的连续值属性,最常见的应用场景包括预测药物反应和预测股票价格等。目前scikit-learn已经实现的算法包括:支持向量回归(SVR),脊回归,Lasso回归,弹性网络(Elastic Net),最小角回归(LARS ),贝叶斯回归,以及各种不同的鲁棒回归算法等。可以看到,这里实现的回归算法几乎涵盖了所有开发者的需求范围,而且更重要的是,scikit-learn还针对每种算法都提供了简单明了的用例参考。
官方链接:1. Supervised learning — scikit-learn 1.2.dev0 documentation
6、聚类聚类算法,是指自动识别具有相似属性的给定对象,并将其分组为集合,属于无监督学习的范畴,最常见的应用场景包括顾客细分和试验结果分组。目前scikit-learn已经实现的算法包括:K-均值聚类,谱聚类,均值偏移,分层聚类,DBSCAN聚类等。
2.3. Clustering
- 2.3.1. Overview of clustering methods
- 2.3.2. K-means
- 2.3.3. Affinity Propagation
- 2.3.4. Mean Shift
- 2.3.5. Spectral clustering
- 2.3.6. Hierarchical clustering
- 2.3.7. DBSCAN
- 2.3.8. OPTICS
- 2.3.9. BIRCH
- 2.3.10. Clustering performance evaluation
官方链接:2.3. Clustering — scikit-learn 1.2.dev0 documentation
scikit-learn的安装 1、安装前的准备以及安装方法安装scikit-learn之前,python包内必要有的包,如Numpy、Scipy、Matlotlib等。
pip install scikit-learn
pip install scikit-learn==0.19.1
pip install scikit-learn==0.23.1
pip install F:\Program Files\Python\whl_scikit_learn\scikit_learn-0.19.1-cp34-cp34m-win_amd64.whl
from sklearn import datasets
iris = datasets.load_iris()
digits = datasets.load_digits()
print (digits.data)
scikit-learn algorithm cheat-sheet
1、如何选择最合适的模型算法相关文章:Choosing the right estimator — scikit-learn 1.0.1 documentation
解决机器学习问题的最困难的部分通常是为工作找到正确的估计量。不同的估计量更适合于不同类型的数据和不同的问题。下面的流程图旨在为用户提供一个关于如何处理问题的粗略指南,这些问题涉及到哪些评估人员要尝试您的数据。点击下表中的任何估算器查看其文档。
相关文章
scikit-learn与机器学习的那些不可告密的七七八八事
scikit-learn与深度学习的那些不可告密的七七八八事