日期用于线性回归并使用spark mllib将日期转换为数字

时间:2018-01-27 22:19:53

标签: scala apache-spark machine-learning linear-regression apache-spark-mllib

我想在线性回归中使用日期。 所以我必须将其转换为数字。我必须设置最低日期0并根据日期差异不断增加数字。

然后我可以使用Scala,Spark MLlib在线性回归中使用日期字段。 我已准备好数据框,包括日期等一些字段。 例如,

| date       | id |
| 01-01-2017 | 12 |
| 01-02-2016 | 13 |
| 05-05-2016 | 22 |

对于字符串,我使用了一种热编码技术。但是对于日期,如何将第一个日期设置为0,然后根据差异增加数量? 感谢。

1 个答案:

答案 0 :(得分:1)

这完全取决于您要创建的模型。对于非常基本的趋势建模,您可以将数据转换为Unix时间戳:

getClass().getSimpleName().toLowerCase()

不需要额外的处理,但您当然可以将其从0开始,或者重新缩放到更方便的比例。

更多高级建模将包括提取不同的组件,如import org.apache.spark.sql.functions._ val parsed = df.withColumn("date", unix_timestamp($"date", "dd-MM-yyyy")) month。这些通常应该被视为分类变量和一个热编码。