日期在线性回归中的使用以及使用 spark mllib 将日期转换为数字
Date use in linear regression and conversion of date to numbers using spark mllib
我想在线性回归中使用日期。
所以我必须把它转换成一个数字。而且我必须设置最低日期 0 并根据日期差异不断增加一个数字。
然后我可以使用 Scala、Spark MLlib 在线性回归中使用日期字段。
我已经准备好数据框,其中包含一些字段,包括日期。
例如,
| date | id |
| 01-01-2017 | 12 |
| 01-02-2016 | 13 |
| 05-05-2016 | 22 |
对于字符串,我已经使用一种热编码技术实现了。但是对于日期,我如何将第一个日期设置为 0,然后根据差异增加数字?
谢谢
这完全取决于您要创建的模型。对于非常基本的趋势建模,您可以将数据转换为 Unix 时间戳:
import org.apache.spark.sql.functions._
val parsed = df.withColumn("date", unix_timestamp($"date", "dd-MM-yyyy"))
不需要额外的处理,但您当然可以将其从 0 开始,或重新调整为更方便的比例。
更高级的建模将包括提取不同的组件,如 month
或 dayofweek
。这些通常应被视为分类变量,并进行单热编码。
我想在线性回归中使用日期。 所以我必须把它转换成一个数字。而且我必须设置最低日期 0 并根据日期差异不断增加一个数字。
然后我可以使用 Scala、Spark MLlib 在线性回归中使用日期字段。 我已经准备好数据框,其中包含一些字段,包括日期。 例如,
| date | id |
| 01-01-2017 | 12 |
| 01-02-2016 | 13 |
| 05-05-2016 | 22 |
对于字符串,我已经使用一种热编码技术实现了。但是对于日期,我如何将第一个日期设置为 0,然后根据差异增加数字? 谢谢
这完全取决于您要创建的模型。对于非常基本的趋势建模,您可以将数据转换为 Unix 时间戳:
import org.apache.spark.sql.functions._
val parsed = df.withColumn("date", unix_timestamp($"date", "dd-MM-yyyy"))
不需要额外的处理,但您当然可以将其从 0 开始,或重新调整为更方便的比例。
更高级的建模将包括提取不同的组件,如 month
或 dayofweek
。这些通常应被视为分类变量,并进行单热编码。