为什么选择 Scikit-Learn?#

Scikit-Learn 将现代机器学习工具引入化学计量学——使工作流程更加灵活、可扩展,并且易于原型设计和验证。

  • 灵活性:可与各种化学计量学模型和预处理方法配合使用。

  • 集成性:可与特定领域工具结合,用于光谱分析、多元统计和实验设计。

  • 可扩展性:既能处理小型实验室数据集,也能处理大规模的工业数据。

  • 易于实验:使用不同算法和预处理技术进行快速原型设计。

什么是 Scikit-Learn?#

Scikit-learn (sklearn) 是一个基于 NumPySciPy 构建的开源机器学习库。它为各种机器学习技术提供统一的 API,包括:

  • 监督学习:回归、分类和集成方法

  • 无监督学习:聚类和降维

  • 数据预处理:特征缩放、编码和转换

  • 模型评估:交叉验证、指标和超参数调优

scikit-learn 因其简单性、高效性和丰富的文档而在研究和工业领域得到广泛应用。

广泛的模型和方法工具箱#

scikit-learn 的最大优势之一是其丰富的模型和工具选择。一些关键类别包括:

回归#

  • 线性回归 (LinearRegression):一个简单但有效的连续目标变量模型。

  • 偏最小二乘法 (PLSRegression):化学计量学中常用的强大方法。

  • 支持向量回归 (SVR):对非线性关系有效。

分类#

  • 逻辑回归 (LogisticRegression):用于二元和多类分类。

  • 随机森林 (RandomForestClassifier):一种稳健的集成方法,可提高准确性。

  • 支持向量机 (SVC):对复杂决策边界有效。

降维#

  • 主成分分析 (PCA):提取数据集中最重要的特征。

  • 非负矩阵分解 (NMF):对信号分解有用。

  • t-SNE (TSNE):有助于可视化复杂的高维数据。

预处理工具#

  • 特征缩放 (StandardScaler, MinMaxScaler):对于依赖距离度量的模型至关重要。

  • 分类数据编码 (OneHotEncoder, LabelEncoder):将分类变量转换为数值格式。

  • 特征选择 (SelectKBest, RFE):帮助选择最相关的变量。

Scikit-learn 工作流程#

Scikit-learn 遵循以下图中概述的直观三步流程:

scikit-learn 工作流程
  1. 定义:配置模型/预处理参数。

  2. 拟合:模型使用 fit() 从训练数据中学习模式。

  3. 应用:拟合的模型使用以下任一方法处理新数据:

  • transform() 用于预处理步骤和无监督学习

  • predict() 用于监督学习模型(分类和回归)

让我们看两个例子,一个是预处理,一个是回归模型。首先,导入所需的模块:

from sklearn.preprocessing import StandardScaler
from sklearn.cross_decomposition import PLSRegression

使用 StandardScaler 进行预处理:

# 1. Define the preprocessor
scaler = StandardScaler(with_mean=True, with_std=False)

# 2. Fit the preprocessor to the data
scaler.fit(X)

# 3. Apply the processor to the data
X_scaled = scaler.transform(X)

# ... or to new new data
X_new_scaled = scaler.transform(X_new)

构建 PLSRegression 模型:

# 1. Define the PLS model with two components
pls = PLSRegression(n_components=2)

# 2. Fit the PLS model to the training data
pls.fit(X_scaled, y)

# 3. Apply the PLS model to new data
y_pred = pls.predict(X_new_scaled)

扩展生态系统#

除了 scikit-learn 主包之外,该生态系统还包括一系列扩展其功能的互补开源库:

  • skore:简化和结构化模型开发与解释。

  • astartes:将数据拆分为训练集和测试集的算法技术。

  • Imbalanced-learn:处理不平衡数据集的技术。

  • skops:用于序列化和共享机器学习模型的工具。