PySpark中的功能选择

时间:2018-11-28 21:36:16

标签: python machine-learning pyspark feature-selection google-cloud-dataproc

我正在研究1,456,354 X 53形状的机器学习模型。我想为我的数据集进行特征选择。我知道如何使用以下代码在python中进行特征选择。

from sklearn.feature_selection import RFECV,RFE

logreg = LogisticRegression()
rfe = RFE(logreg, step=1, n_features_to_select=28)
rfe = rfe.fit(df.values,arrythmia.values)
features_bool = np.array(rfe.support_)
features = np.array(df.columns)
result = features[features_bool]
print(result)

但是,我找不到任何文章来说明如何在pyspark中执行递归特征选择。

我试图在pyspark中导入sklearn库,但它给了我一个找不到sklearn模块的错误。我正在google dataproc群集上运行pyspark。

请有人帮助我在pyspark中实现这一目标

3 个答案:

答案 0 :(得分:7)

您可以选择几种方法。

  • 如果您需要的模型是在Spark的MLlib或spark-sklearn`中实现的,则可以修改您的代码以使用相应的库。

  • 如果您可以在本地训练模型,而只想部署它进行预测,则可以使用用户定义函数(UDFs)或vectorized UDFs在Spark上运行训练后的模型。 Here's不错的帖子,讨论了如何做到这一点。

  • 如果需要在Spark-sklearn不支持的Spark上运行sklearn模型,则需要使sklearn可用于集群中每个工作节点上的Spark。您可以通过在Spark集群中的每个节点上手动安装sklearn来做到这一点(确保要安装到Spark正在使用的Python环境中)。

  • 或者,您可以通过Pyspark作业打包和分发sklearn库。简而言之,您可以pip install sklearn进入脚本附近的本地目录,然后压缩sklearn安装目录并使用--py-files的{​​{1}}标志将压缩后的sklearn与您的用户一起发送给所有工作人员。脚本。 This article全面介绍了如何完成此操作。

答案 1 :(得分:1)

我建议使用逐步回归模型,您可以轻松地找到重要特征,并且仅在物流回归中将其作为数据集。逐步回归适用于相关性,但有差异。 以下链接将有助于实现逐步回归以进行特征选择。 https://datascience.stackexchange.com/questions/24405/how-to-do-stepwise-regression-using-sklearn

答案 2 :(得分:1)

我们可以尝试使用 pyspark

中的功能选择方法
  • Chi-Squared选择器
  • 随机森林选择器

参考文献: