Как запустить линейную регрессию в PySpark и ограничить перехват нулем? - PullRequest
0 голосов
/ 08 января 2020

У меня есть существующий код в SAS, который запускает довольно простую регрессию Pro c. Мне нужно преобразовать это в PySpark.

Я хочу запустить линейную регрессию в PySpark и указать, что перехват должен быть 0. У меня есть 2 входных столбца (INPUT1 и INPUT2) и выходной столбец (OUTPUT ) на моем data_input и дополнительно хотел бы применить ограничение, согласно которому взвешивание 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))

1 Ответ

1 голос
/ 08 января 2020

Посмотрите на это pyspark do c: 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

Надеюсь, это поможет!

...