Scikit-learn

作为一个适用于 Python 编程语言的机器学习 (ML) 库,Scikit-learn 拥有大量算法,可供程序员和数据科学家在机器学习模型中轻松部署。

什么是 Scikit-learn?

Scikit-learn 是一个热门且可靠的机器学习库,拥有各种算法,同时也是用于 ML 可视化、预处理、模型拟合、选择和评估的工具。 

Scikit-learn 基于 NumPy、SciPy 和 matplotlib 构建,并具有大量用于分类、回归和集群的高效算法。其中包括支持向量机、随机森林、梯度提升、k-means 和 DBSCAN。 

Scikit-learn 拥有一致且设计高效的 API、适用于大多数算法的丰富文档以及大量在线教程,因此相对易于开发。 

当前版本可用于 Linux、MacOS 和 Windows 等热门平台。

为何选择 Scikit-learn?

得益于其相对易于使用、且设计周到又充满热情的社区,Scikit-learn API 已成为机器学习实施的实际标准。    

Scikit-learn 为 ML 模型构建、拟合及评估提供了以下模块: 

  • 预处理是指 Scikit-learn 工具,这些工具可用于数据分析期间的特征提取和归一化。
  • 分类是指一组工具,这组工具可识别机器学习模型中与数据相关的类别。例如,这些工具还可用于将电子邮件分类为有效邮件或垃圾邮件。实际上,分类可确定目标所属的类别。
  • 回归是指 ML 模型的创建,该模型试图理解输入和输出数据(例如行为或股票价格)之间的关系。回归可预测与目标关联的连续值属性。
  • Scikit-learn 中的聚类工具自动将具有相似特征的数据以集的形式进行分组,例如根据物理位置排列成集的客户数据。
  • 降维可减少用于分析的随机变量数量。例如,为了提升可视化的效率,可能会将离散数据排除在外。
  • 模型选择是指算法及其提供相应工具的能力,并且这些工具能够比较、验证和选择最佳参数,以将其用于数据科学机器学习项目。
  • 流程是指用于构建模型工作流程的实用程序。
  • 机器学习可视化可支持快速绘图和视觉调整。

Scikit-learn 的工作原理

Scikit-learn 主要采用 Python 编写,并使用 NumPy 进行高性能线性代数以及数组运算。一些核心 Scikit-learn 算法则采用 Cython 编写,以提升整体性能。

作为更高级别的库,它包含各种机器学习算法的几种实施,Scikit-learn 让用户仅使用几行代码即可构建、训练和评估模型。

Scikit-learn 还提供一套统一的高级别 API,以供构建 ML 流程或工作流程使用。

训练和测试。

在 Scikit-learn ML 流程中,您可以通过转换器传递数据并提取特征,使用估测器生成模型,并使用评估器测量模型的准确性。

  • Transformer:这是一种转换或输入数据,以进行预处理的算法。
  • Estimator:这是一种机器学习算法,用于训练或拟合数据,以构建可用于预测的模型。
  • 流程:流程将多个转换器和估测器相连接,从而指定 ML 工作流程。

GPU 加速的 Scikit-learn API 和端到端数据科学

在架构方面,CPU 仅由几个具有大缓存内存的核心组成,一次只可以处理几个软件线程。相比之下,GPU 由数百个核心组成,可以同时处理数千个线程。

CPU 与 GPU 的区别。

基于 CUDA-X AI 创建的 NVIDIA RAPIDS 开源软件库套件使您完全能够在 GPU 上执行端到端数据科学和分析流程。此套件依靠 NVIDIA® CUDA® 基元进行低级别计算优化,但通过用户友好型 Python 接口能够实现 GPU 并行化和高带宽显存速度。

RAPIDS cuML 的机器学习算法和数学基元遵循熟悉的类似于 scikit-learn 的 API。单块 GPU 和大型数据中心部署均支持 XGBoost、随机森林等主流算法。针对大型数据集,相较于同等功效的 CPU,这些基于 GPU 的实施方案能够以 10 到 50 倍的速度更快地完成任务。

数据准备、模型训练和可视化。

借助 RAPIDS GPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性可通过 Apache Arrow 等库实现,并且可加速端到端流程(从数据准备到机器学习,再到深度学习)。

RAPIDS 支持在许多热门数据科学库之间共享设备内存。这样可将数据保留在 GPU 上,并省去了来回复制主机内存的高昂成本。

热门数据科学库。

后续步骤

了解: