【问题标题】:Date use in linear regression and conversion of date to numbers using spark mllib线性回归中的日期使用以及使用 spark mllib 将日期转换为数字
【发布时间】:2018-07-06 23:03:27
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    import org.apache.spark.sql.functions._
    
    val parsed = df.withColumn("date", unix_timestamp($"date", "dd-MM-yyyy"))
    

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

    更高级的建模将包括提取不同的组件,例如 monthdayofweek。这些通常应被视为分类变量,并且是 one-hot-encoded。

    【讨论】:

    • 是否可以将日期表示为“自 2017 年 1 月 1 日以来的天数”或“自 2016 年 1 月 1 日以来的天数”或类似的东西值得一试吗?
    • 我不这么认为。它不会改变模型的解释,每单位时间都会改变。
    • 工作!!日期转换为数字,因此可以直接应用一种热编码。非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多