Python 如何指定要在RNN中预测的列/功能?

Python 如何指定要在RNN中预测的列/功能?,python,pandas,time-series,tensorflow2.0,recurrent-neural-network,Python,Pandas,Time Series,Tensorflow2.0,Recurrent Neural Network,我试图使用一个包含30种不同特征的时间序列数据集,我想预测其中3种特征的未来值。是否有任何方法可以指定我希望用于输出的功能以及使用TensorFlow和Sckit学习的输出数量?还是在我创建x_列、y_列等集合时就完成了?我想根据各种气象因素(气压、硬盘驱动器、CDD、污染等)预测热指数、温度和湿度。我想预测的3个因素是30个总特征的一部分 我正在使用TensorFlows RNN教程: 我的数据是每天提供的,所以我想用最近30天来预测第二天 这是我对模型培训的实施: BATCH_SIZ

我试图使用一个包含30种不同特征的时间序列数据集,我想预测其中3种特征的未来值。是否有任何方法可以指定我希望用于输出的功能以及使用TensorFlow和Sckit学习的输出数量?还是在我创建x_列、y_列等集合时就完成了?我想根据各种气象因素(气压、硬盘驱动器、CDD、污染等)预测热指数、温度和湿度。我想预测的3个因素是30个总特征的一部分

我正在使用TensorFlows RNN教程:

我的数据是每天提供的,所以我想用最近30天来预测第二天

这是我对模型培训的实施:

    BATCH_SIZE = 256
    BUFFER_SIZE = 10000
    
    train_univariate = tf.data.Dataset.from_tensor_slices((x_train_uni, y_train_uni))
    train_univariate = 
    
    train_univariate.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
    
    val_univariate = tf.data.Dataset.from_tensor_slices((x_val_uni, y_val_uni))
    val_univariate = val_univariate.batch(BATCH_SIZE).repeat()
    
    simple_lstm_model = tf.keras.models.Sequential([
        tf.keras.layers.LSTM(8, input_shape=x_train_uni.shape[-2:]),
        tf.keras.layers.Dense(1)
    ])
    
    simple_lstm_model.compile(optimizer='adam', loss='mae')
    
    for x, y in val_univariate.take(1):
        print(simple_lstm_model.predict(x).shape)
        
    EVALUATION_INTERVAL = 200
    EPOCHS = 30
    
    simple_lstm_model.fit(train_univariate, epochs=EPOCHS,
                          steps_per_epoch=EVALUATION_INTERVAL,
                          validation_data=val_univariate, validation_steps=50)

编辑:我知道要增加输出数量,我必须增加密度(1)值,我想知道如何指定要输出/预测的功能,你需要给出模型。在与LSTM层兼容的形状中调用你想要学习的变量

例如,如果没有任何代码,像您这样的模型可能会作为输入:

[batchsize,n_时间戳,n_功能]

和输出:

[批量大小、n_时间戳、m_功能]

其中n为输入,m为输出

因此,您需要为模型提供与模型输出形状相同的真值数据,以便模型计算损失

因此model.fit调用应该是:

拟合(x_序列,y_序列,…),其中y_序列是与模型输出形状相同的真向量

您必须设计一个模型体系结构,以满足您的需求并匹配您期望的输出。我做了一个玩具的例子,但我从来没有真正使用过这种类型的神经网络,所以不知道它对这个问题是否有意义

import tensorflow as tf
from tensorflow.keras.layers import LSTM, Dense, InputLayer, Reshape

ni_feats = 10
no_feats = 3
ndays = 30

model = tf.keras.Sequential([
    InputLayer((ndays, ni_feats)),
    LSTM(10),
    Dense(int(no_feats * ndays)),
    Reshape((ndays, no_feats))
    ])

您需要为model.fit调用与LSTM层兼容的形状中要学习的变量

例如,如果没有任何代码,像您这样的模型可能会作为输入:

[batchsize,n_时间戳,n_功能]

和输出:

[批量大小、n_时间戳、m_功能]

其中n为输入,m为输出

因此,您需要为模型提供与模型输出形状相同的真值数据,以便模型计算损失

因此model.fit调用应该是:

拟合(x_序列,y_序列,…),其中y_序列是与模型输出形状相同的真向量

您必须设计一个模型体系结构,以满足您的需求并匹配您期望的输出。我做了一个玩具的例子,但我从来没有真正使用过这种类型的神经网络,所以不知道它对这个问题是否有意义

import tensorflow as tf
from tensorflow.keras.layers import LSTM, Dense, InputLayer, Reshape

ni_feats = 10
no_feats = 3
ndays = 30

model = tf.keras.Sequential([
    InputLayer((ndays, ni_feats)),
    LSTM(10),
    Dense(int(no_feats * ndays)),
    Reshape((ndays, no_feats))
    ])

不,我没有六月底以前的数据。基本上,考虑到下个月的“预期”情况,我想预测下个月的这三个特征。你有过去n天的(n*30)个特征,你想预测第(n+1)天的3个特征吗?是的,当你说过去n天的(n*30)个特征时,你指的是过去n天的每一天的30个值,对吧?不,我没有六月底以前的数据。基本上,考虑到下个月的“预期”情况,我想预测下个月的这三个特征。你有过去n天的(n*30)个特征,你想预测第(n+1)天的3个特征吗?是的,当你说过去n天的(n*30)个特征时,你是指过去n天的每一天都有30个值,对吗?