【问题标题】:How do I normalise dates in Tensorflow.js?如何规范化 Tensorflow.js 中的日期?
【发布时间】:2021-07-10 14:25:12
【问题描述】:

我一直在使用各种类型的数据集在 Tensorflow.js 中构建一些简单的线性回归模型。但是,我现在想看看我的数据集中的日期和价格之间的关系。

在之前的模型中,我将价格或其他特征归一化,以便张量表示为 0 到 1 之间的向量。

如果第一个日期必须为 0,最后一个日期必须在 1 范围内,那么这个日期将如何处理?此外,我之后需要对张量进行非规范化。

我可以使用 date.fns 之类的库将日期转换为 unix 时间戳...但我想知道是否有更简洁的方法来做到这一点。

我的规范化和非规范化函数:

        function normalise (tensor) {
            const min = tensor.min();
            const max = tensor.max();
            const normalisedTensor = tensor.sub(min).div(max.sub(min))
            return {
                tensor : normalisedTensor,
                min,
                max
            }
        }

        function denormalise(tensor, min, max) {
            const denormalisedTensor = tensor.mul(max.sub(min)).add(min);
            return denormalisedTensor    
        
        }

【问题讨论】:

  • 具体日期是什么?
  • 这种形式的交易日期'2021-03-21

标签: tensorflow machine-learning deep-learning linear-regression tensorflow.js


【解决方案1】:

基本原理是你需要将日期格式(如2021-03-21)转换为数字,然后你可以使用你已经拥有的normalize和denormalise函数。在您的解决方案中,您已经这样做了,但是,您可以用更简单的方式编写它。你可以使用date-fns,但是标准的 JavaScript Date object 也足够了,所以我会使用它。

假设您的输入是一个日期字符串数组,例如2021-05-01,那么您可以这样做:

const dateStrings = ['2021-05-01', '2021-05-07', '2021-05-31'];
const timestamps = dateStrings.map(dateString => new Date(dateString).valueOf());
const unnormalisedTensor = tf.tensor1d(timestamps);

然后您可以使用您拥有的函数进行规范化(和非规范化)。

您可以像这样从时间戳转换回日期字符串:

const timestamps = await unnormalisedTensor.array();
const dateStrings = timestamps.map(timestamp => new Date(timestamp).toISOString().substring(0,10));

【讨论】:

  • 谢谢贾斯汀,这很完美。
【解决方案2】:

我通过使用 date.fns 将日期转换为时间戳,然后使用以下函数进行规范化来实现这一点

const getTimestamps = (data) => {

    data.forEach(record => {
        let newDate = record.time
        newDate = new Date(newDate);
        const timestamp = getUnixTime(newDate);
        console.log(newDate, timestamp)
        record.timestamp = timestamp
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多