基于pyspark的分布式scikit学习元估计器
sk-dist的Python项目详细描述
这是什么?
sk-dist是一个python模块,用于在 scikit-learn并且是 分布在Apache 2.0 software license下面。这个 sk-dist模块可以看作是“分布式scikit学习” 它的核心功能是扩展内置的scikit-learn。 joblib元估计训练的并行化 spark。
主要功能
- 分布式训练-sk-dist并行化
scikit-learnpyspark的元估计量。这允许
这些估计器的无约束分布训练
任何一台机器的物理资源。不管怎样,斯帕克
伪影会自动从拟合的估计器中去除。这些
然后可以对预测任务的估计器进行pickle和unpickle,
在其^{tt3}的预测时间相同地运行$
相对应的人。支持的任务是:
- 网格搜索:Hyperparameter optimization techniques, 尤其 GridSearchCV 和 RandomizedSeachCV, 使每个候选参数集都经过训练 同时。
- 多类策略:Multiclass classification strategies, 尤其 OneVsRestClassifier 和 OneVsOneClassifier, 它们的分布使得每个二进制probelm都在 平行的。
- 树集合:Decision tree ensembles 用于分类和回归,特别是 RandomForest 和 ExtraTrees, 它们的分布使得每棵树都是并行训练的。
- 分布式预测-sk-dist提供预测模块 建造vectorized UDFs 对于 PySparkDataFrames 使用拟合的scikit-learn估计量。这将分发 predict和predict_proba方法的scikit-learn 估计器,使用scikit-learn启用大规模预测。
- {STR 1 } $特征编码< /强> -^ TT1}$提供了灵活的特征 编码实用程序,名为Encoderizer,它对混合类型进行编码 使用默认行为或用户定义的要素空间 可自定义设置。它特别针对文本特性,但是 它还处理数字和字典类型的特征空间。
安装
依赖性
sk-dist需要:
- Python(>;=3.5)
- pandas(>;=0.19.0)
- numpy(>;=1.17.0)
- scipy(>;=1.3.1)
- scikit-learn(>;=0.21.3)
- joblib(>;=0.11)
sk dist不支持python 2
火花依赖性
大多数sk-dist功能都需要安装Spark以及 皮斯帕克。有些功能可以在没有Spark的情况下运行,因此与Spark相关 不需要依赖项。sk-dist与spark的关系 仅依赖于sparkContext作为 sk-dist实例化时的类。
多种火花配置和设置将工作。这是留给 用户配置自己的Spark设置。测试已在上完成 spark 2.4,但是任何spark 2.0+版本都可以工作。
其他与火花相关的依赖项是pyarrow,它仅用于 对于skdist.predict函数。它使用矢量化的熊猫乳房 需要pyarrow>=0.8.0。根据Spark版本的不同,它可能是 必须设置 spark.conf.set("spark.sql.execution.arrow.enabled", "true")在 火花配置。
用户安装
安装sk-dist的最简单方法是使用pip:
pip install --upgrade sk-dist
您还可以下载源代码:
git clone https://github.com/Ibotta/sk-dist.git
测试
安装了pytest后,您可以在本地运行测试:
pytest sk-dist
测试注意事项
关于单元测试的注意事项:单元测试只为测试而编写 (1)不需要sparkContext和(2)具有的功能 包要求之外没有依赖项。这意味着 许多分布式的spark功能不包含在单元中 测试
示例
为了获得更完整的测试体验并确保您的火花 分布和配置与sk-dist兼容,请考虑 运行 examples (哪一个在spark环境中实例化一个sparkContext。