为什么选择 Scikit-Learn?#
Scikit-Learn 将现代机器学习工具引入化学计量学——使工作流程更加灵活、可扩展,并且易于原型设计和验证。
灵活性:可与各种化学计量学模型和预处理方法配合使用。
集成性:可与特定领域工具结合,用于光谱分析、多元统计和实验设计。
可扩展性:既能处理小型实验室数据集,也能处理大规模的工业数据。
易于实验:使用不同算法和预处理技术进行快速原型设计。
什么是 Scikit-Learn?#
Scikit-learn (sklearn) 是一个基于 NumPy、SciPy 构建的开源机器学习库。它为各种机器学习技术提供统一的 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 遵循以下图中概述的直观三步流程:
定义:配置模型/预处理参数。
拟合:模型使用
fit()从训练数据中学习模式。应用:拟合的模型使用以下任一方法处理新数据:
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:用于序列化和共享机器学习模型的工具。