本篇文章主要介绍一下 Scikit-Learn 所提供的一些主要功能,它假定我们已经掌握了机器学习的基础知识,包括模型拟合、预测、交叉验证等。
Scikit-Learn 是一个开源的机器学习库,它支持有监督学习和无监督学习。同时,它还提供了用于模型拟合、数据预处理、模型选择和评估以及其他非常实用的多种工具。
1. 拟合和预测:估算器基础
Scikit-Learn 提供了数十种内置的机器学习算法和模型,称为估算器。每个估算器都可以使用fit
方法去拟合一些数据。
下面是一个简单的示例,其中我们使用了一些非常基本的数据来训练RandomForestClassifier
:
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=0)
X = [[1, 2, 3],
[11, 12, 13]]
y = [0, 1]
clf.fit(X, y)
fit
方法通常接收 2 个输入:
- 样本矩阵
X
:通常大小为(n_samples, n_features)
,这意味着一行为一个样本,一列为一个特征。 - 目标值
y
:通常为一维数组,该数组中索引值i
的值对应样本矩阵X
中第i
行样本的目标值- 对于回归任务而言,
y
为真实数字; - 对于分类任务而言,
y
为整数(或任何其他离散值); - 对于无监督学习,
y
则无需指定。
- 对于回归任务而言,
虽然某些估算器可以使用其他格式(例如稀疏矩阵),但通常X
和y
为 numpy 数组或者等效的类似数组的数据类型。
一旦估算器拟合后,便可以在新数据上进行预测,得出对应的目标值,我们并不需要重新训练估算器:
# 预测训练样本的标签(类别)
clf.predict(X) # array([0, 1])
# 预测新数据的标签(类别)
clf.predict([[4, 5, 6], [14, 15, 16]]) # array([0, 1])
2. 转换器和预处理器
机器学习的工作流程通常由不同部分所组成,常规的流水线(Pipeline)包含数据预处理(例如数据的转换或插入)以及