机器学习库拥有丰富的开源实现,从单机的Scikit-learn到分布式的MLLib,它们各有特色,被广泛应用在各种数据处理的场景。本文将介绍机器学习库Scikit-learn的算法分类及其应用场景。
Scikit-learn是构建在Python基础上的机器学习库,由于其简单且高效,而备受开发者欢迎。Scikit-learn将算法分为六个类别,如下图所示:
算法分类
分类(Classification)算法:目标是确定对象所属类别,主要应用于垃圾邮件检测、图像识别。
回归(Regression)算法:目的是预测连续值属性的变化,主要适用于股票价格预测。
聚类(Clustering)算法:目的是类似对象的自动化分组,主要适用于客户细分。
降维(Dimensionality reduction)算法:目的是减少随机变量的数目,主要适用于可视化、模型特征选择。
模型选择(Model selection)算法:目的是比较、验证和选择参数和模型,主要适用于通过参数调优提高准确率。
预处理(Preprocessing)算法:目的是特征提取与正则化,主要适用于将输入数据转化成可被机器学习算法识别的表示方式。
Scikit-learn是单机版的机器学习算法库,通常只能处理小规模的数据集。当输入数据集增大到单机难以容纳或单机处理时间过长时,必须借助分布式机器学习算法库。随着分布式计算框架的流行,越来越多的机器学习算法被分布式化,进而产生了丰富的机器学习库,包括MapReduce之上的Mahout、Spark之上的MLLib、Flink之上的FlinkML等。