【问题标题】:How do I run a Linear Regression within PySpark and restrict the Intercept to be zero?如何在 PySpark 中运行线性回归并将截距限制为零?
【发布时间】:2020-01-08 13:57:06
【问题描述】:

我在 SAS 中有运行相当简单的 Proc 回归的现有代码。我需要将其转换为 PySpark。

我希望在 PySpark 中运行线性回归并指定截距应为 0。我的 data_input 上有 2 个输入列(INPUT1 和 INPUT2)和一个输出列(OUTPUT),并且还想应用INPUT1 权重 = 1 - INPUT2 权重的限制。

我的代码目前看起来像这样,但我看不到在哪里可以添加所需的设置:

vectorAssembler=VectorAssembler(inputCols=['INPUT1', 'INPUT2'], outputCol='features')
regression_df=vectorAssembler.transform(data_input)
regression_df=regression_df.select(['features', 'OUTPUT'])

lr=LinearRegression(featuresCol='features', labelCol='OUTPUT')
model=lr.fit(regression_df)
print("Coefficients: " + str(model.coefficients))
print("Intercept: +str(model.intercept))

【问题讨论】:

    标签: apache-spark pyspark linear-regression intercept


    【解决方案1】:

    看看这个pyspark 文档: https://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.regression.LinearRegression

    如您所见,您可以为LinearRegression 对象设置许多参数,其中一个是fitIntercept,默认情况下设置为True。您还可以在此处为您的LinearRegression 模型设置其他参数,例如求解器、损失函数等。 此外,您还可以在LinearRegression 上调用其他方法,其中之一是setFitIntercept。你可以在这里找到更多信息:http://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.regression.LinearRegression.setFitIntercept

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 2020-12-03
      • 2019-02-23
      • 1970-01-01
      • 2012-05-27
      • 2016-03-04
      • 2016-04-16
      • 2016-08-31
      • 2015-05-30
      相关资源
      最近更新 更多