【问题标题】:How to do prediction with Sklearn Model inside Spark?如何在 Spark 中使用 Sklearn 模型进行预测?
【发布时间】:2017-08-10 18:54:35
【问题描述】:

我已经使用 sklearn 在 python 中训练了一个模型。我们如何使用相同的模型在 Spark 中加载并在 Spark RDD 上生成预测?

【问题讨论】:

    标签: python apache-spark scikit-learn pyspark apache-spark-mllib


    【解决方案1】:

    嗯,

    我将展示一个 Sklearn 中的线性回归示例,并向您展示如何使用它来预测 Spark RDD 中的元素。

    首先用sklearn例子训练模型:

    # Create linear regression object
    regr = linear_model.LinearRegression()
    
    # Train the model using the training sets
    regr.fit(diabetes_X_train, diabetes_y_train)
    

    这里我们刚好合适,您需要从 RDD 中预测每个数据。

    在这种情况下,您的 RDD 应该是带有 X 的 RDD,如下所示:

    rdd = sc.parallelize([1, 2, 3, 4])
    

    所以你首先需要广播你的sklearn模型:

    regr_bc = self.sc.broadcast(regr)
    

    然后您可以使用它来预测您的数据,如下所示:

    rdd.map(lambda x: (x, regr_bc.value.predict(x))).collect()
    

    所以您在 RDD 中的元素是您的 X,第二个元素将是您预测的 Y。collect 将返回如下内容:

    [(1, 2), (2, 4), (3, 6), ...]
    

    【讨论】:

    • collect() 保存到本地驱动程序;那么在大型数据集的情况下有什么替代方案?
    • 您好,这只是获得快速响应的示例。收集只是为了在屏幕上显示结果。我建议您使用 write() 将大型数据集保存在您的 hadoop 集群 os s3 存储桶中。
    • 我建议改为mapPartition,因为这样可以让您批量预测并避免一些开销
    猜你喜欢
    • 2018-11-11
    • 2020-04-11
    • 2018-12-27
    • 1970-01-01
    • 2019-12-20
    • 2018-12-01
    • 2016-05-15
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多