Scikit-learn
是一个基于Python
的开源机器学习库,它提供了大量的机器学习算法和工具,方便用户进行数据挖掘、分析和预测。
Scikit-learn
是基于另外两个知名的库 Scipy
和 Numpy
的,关于 Scipy
和 Numpy
等库,之前的系列文章中有介绍:
1. 概要
自从AlphaGo
再度带起机器学习和AI的热潮以来,我们听到最多的机器学习框架是 TensorFlow
,PyTorch
以及Keras
等等。
Scikit-learn
与它们相比,知名度要低不少,这是因为Scikit-learn
库关注的是传统的机器学习领域中经典的,被广泛应用和验证的算法。它完全不涉及TensorFlow
,PyTorch
以及Keras
等框架所在的深度学习领域。
虽然看起来Scikit-learn
似乎远远不如那些流行的深度学习框架,但从我个人的经验来看的话,学习和掌握Scikit-learn
的意义远远大于那些深度学习框架。
首先,Scikit-learn
历史悠久,发展至今,不仅提供了丰富的文档和参考样例,甚至连训练数据都准备好了,随时都可以拿来实验机器学习算法。
其次,深度学习虽好,但是使用要求也高。除了掌握其算法,还必须有大量的数据和高性能的硬件,这绝不是个人和普通企业所能提供的。未来,大概率是由几个头部大企业训练出模型,然后开放API
给我们使用,个人和中小企业训练自己的深度学习模型的概率并不高。
而Scikit-learn
则与之不一样,它所包含的传统机器学习中的很多优秀算法并不需要海量的数据,在数据量不大的情况下依旧可以训练出优秀的模型。
最后,就我自己平时的数据分析相关项目的实践来看,Scikit-learn
是一个真正称手的工具。我平时的项目中会接触到各类数据,比如气象数据,销售数据,还有一些交易类的数据等等,由于服务的客户规模不大,所以数据量一般最多也就千万级别。使用Scikit-learn
,能够方便快速的从这些数据中分析出有意义结果。
举个不太恰当的例子,目前流行的深度学习框架相对于Scikit-learn
,就像飞机相对于自行车或小汽车。学会开飞机后,可能实操的机会并不多(除非你在大厂的AI部门);但是学会骑车和开车,总会有用到它的地方,而且由于其便利简单,还会越用越多。
2. 主要模块
Scikit-learn
的主要功能包括数据预处理,模型选择,数据降维,分类,回归和聚类等。
- 数据预处理包括数据的特征提取、归一化、标准化等。
- 模型选择是对给定参数和模型进行比较、验证和选择,以提升预测精度。
- 数据降维是通过降维技术来减少要考虑的随机变量的个数,常见的应用场景有可视化处理、效率提升等。
- 分类是给对象指定所属类别范畴的有监督学习,常见的应用场景有垃圾邮件检测、图像识别等。
- 回归是预测与给定对象相关的连续属性的值,常见的应用场景有预测股票价格、预测二手房交易价格等。
- 聚类是自动识别具有相似属性的给定对象,并将其分组,属于无监督学习,常见的应用场景有顾客细分、实验结果分组等。
从功能上看,涵盖了机器学习从数据处理开始,到各类模块训练算法,最后到模型的验证和调优等完整的生命周期。
3. 系列文章规划
Scikit-learn
的子模块划分非常细,从命名空间来看的话,大概有接近40个模块。分别介绍各个子模块意义不大,不如直接看官方文档,本系列的文章打算从使用者的角度来介绍它。
先从数据和数据处理的角度入手,然后结合自己工作中的实际经验介绍Scikit-learn
中的一些机器学习的算法,最后介绍训练模型时和训练之后对模型的一些修正和调优的方法。
希望能够对喜爱数据分析的朋友们有所帮助!