并行元估计器
内容
并行元估计器¶
dask-ml 提供了一些元估计器,这些元估计器可以并行化和扩展某些任务,这些任务在 scikit-learn 本身中可能无法并行化。例如,ParallelPostFit
将并行化 predict
、predict_proba
和 transform
方法,使它们能够处理大型(可能超出内存)的数据集。
并行预测与转换¶
wrappers.ParallelPostFit
是一个用于并行化后拟合任务(如预测和转换)的元估计器。它可以包装任何 scikit-learn 估计器,以提供并行的 predict
、predict_proba
和 transform
方法。
警告
ParallelPostFit
不会并行化训练步骤。底层估计器的 .fit
方法会正常调用。
由于只包装了 predict
、predict_proba
和 transform
方法,wrappers.ParallelPostFit
在训练数据集相对较小(适合单机内存),而预测或转换必须在更大的数据集(可能大于单机内存)上进行的情况下最为有用。
In [1]: from sklearn.ensemble import GradientBoostingClassifier
In [2]: import sklearn.datasets
In [3]: import dask_ml.datasets
In [4]: from dask_ml.wrappers import ParallelPostFit
在这个例子中,我们将制作一个小的1,000样本训练数据集
In [5]: X, y = sklearn.datasets.make_classification(n_samples=1000,
...: random_state=0)
...:
训练与直接调用 estimator.fit(X, y)
完全相同。除了复制学习到的属性外,ParallelPostFit
所做的就是这些。
In [6]: clf = ParallelPostFit(estimator=GradientBoostingClassifier())
In [7]: clf.fit(X, y)
Out[7]: ParallelPostFit(estimator=GradientBoostingClassifier())
此类适用于预测或转换大型数据集。我们将创建一个更大的 dask 数组 X_big
,每个块包含 10,000 个样本。
In [8]: X_big, _ = dask_ml.datasets.make_classification(n_samples=100000,
...: chunks=10000,
...: random_state=0)
...:
In [9]: clf.predict(X_big)
Out[9]: dask.array<_predict, shape=(100000,), dtype=int64, chunksize=(10000,), chunktype=numpy.ndarray>
这返回了一个 dask.array
。像任何 dask 数组一样,实际的 compute
将导致调度器并行计算任务。如果你已经连接到一个 dask.distributed.Client
,计算将在你的机器集群中并行化。
In [10]: clf.predict_proba(X_big).compute()[:10]
Out[10]:
array([[0.24519988, 0.75480012],
[0.00464304, 0.99535696],
[0.00902734, 0.99097266],
[0.01299259, 0.98700741],
[0.95183049, 0.04816951],
[0.75588097, 0.24411903],
[0.93480418, 0.06519582],
[0.0203811 , 0.9796189 ],
[0.021179 , 0.978821 ],
[0.94211917, 0.05788083]])
参见 并行预测 以了解支持向量分类器如何扩展的示例。
与其他 dask-ml 中的估计器的比较¶
dask-ml
重新实现了 scikit-learn 中的一些估计器,例如 dask_ml.cluster.KMeans
或 dask_ml.preprocessing.QuantileTransformer
。这引发了一个问题,我应该使用重新实现的 dask-ml 版本,还是应该将 scikit-learn 版本包装在一个元估计器中?这因估计器而异,并取决于您对近似解的容忍度和训练数据的大小。一般来说,如果您的训练数据较小,您可以放心地将 scikit-learn 版本包装在 dask-ml
元估计器中。