HHH*_*HHH 4 scikit-learn apache-spark pyspark
我正在探索 pyspark 以及将 scikit-learn 与 pyspark 集成的可能性。我想使用 scikit-learn 在每个分区上训练一个模型。这意味着,当我的 RDD 被定义并分布在不同的工作节点之间时,我想使用 scikit-learn 并在每个工作节点上存在的每个分区上训练一个模型(假设是一个简单的 k-means)。由于 scikit-learn 算法采用 Pandas 数据帧,我最初的想法是调用toPandas每个分区,然后训练我的模型。但是,该toPandas函数将 DataFrame 收集到驱动程序中,这不是我要找的东西。有没有其他方法可以实现这样的目标?
小智 6
scikit-learn 目前还不能与 spark 完全集成,原因是 scikit-learn 算法没有实现分布式,因为它只在一台机器上工作。
不过,您可以找到准备使用 Spark - spark-sklearn中的Scikit 集成工具,该工具支持(暂时)在 Spark 上执行 GridSearch 以进行交叉验证。
编辑
截至 2020 年,spark-sklearn已弃用,而joblib-spark是其推荐的继任者。根据文档,您可以轻松地将交叉验证分发到 Spark 集群,如下所示:
from sklearn.utils import parallel_backend
from sklearn.model_selection import cross_val_score
from sklearn import datasets
from sklearn import svm
from joblibspark import register_spark
register_spark() # register spark backend
iris = datasets.load_iris()
clf = svm.SVC(kernel='linear', C=1)
with parallel_backend('spark', n_jobs=3):
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
print(scores)
Run Code Online (Sandbox Code Playgroud)
GridSearchCV 可以以相同的方式分发。
| 归档时间: |
|
| 查看次数: |
9344 次 |
| 最近记录: |