我正在玩一些股票
timeseries data
并尝试用multivariate features
预测趋势。下面是样本dataset
,其中包括不同的technical indicators
,包括每只股票的moving average
、Parabolic SAR
等。从不同的在线来源来看,他们中的大多数人每次都以one feature
之类的“收盘价”来预测一只股票。我怎样才能利用所有股票的特征来预测一个输出,比如说S&P's close price
。我知道这可能无助于提高预测准确性,但我不确定我现在正在训练什么,希望对 LSTM 模型有更多的了解。
基本上,我将整个数据集放入并进行缩放和训练。如何在一列上指定预测?
代码:
scaler = MinMaxScaler(feature_range = (0,1))
scaled_feature_data = scaler.fit_transform(feature_data)
X_train, y_train = training_set[:, :-1], training_set[:, -1]
X_test, y_test = testing_set[:, :-1], testing_set[:, -1]
X_train = X_train.reshape((X_train.shape[0],1,X_train.shape[1]))
X_test = X_test.reshape((X_test.shape[0],1,X_test.shape[1]))
model_lstm.add(LSTM(50, return_sequences = True, input_shape = (X_train.shape[1], X_train.shape[2])))
型号:
model_lstm.add(LSTM(50, return_sequences = True, input_shape = (X_train.shape[1], X_train.shape[2])))
model_lstm.add(Dropout(0.2))
model_lstm.add(LSTM(units=50, return_sequences=True))
model_lstm.add(Dropout(0.2))
model_lstm.add(LSTM(units=50, return_sequences=True))
model_lstm.add(Dropout(0.2))
model_lstm.add(LSTM(units=50))
model_lstm.add(Dropout(0.2))
model_lstm.add(Dense(units=1, activation='relu'))
这是一个回归问题。您正在预测一个变量。所以最后一层可能看起来像
model_lstm.add(Dense(1))
model_lstm.compile(loss='mse', optimizer='rmsprop')
此外,您可能不需要为每个输入标记返回 return_sequences。如果
return_sequences=true
,那么输出将是一个矩阵(实际上是 (batch_size, num_tokens, num_features)),它不能自动展平为预计成为 Dense(1) 层输入的向量 (batch_size, num_features)。只需使用最后一个 LSTM 节点的输出。为此,请设置 return_sequences=false
。它的值取决于以前的令牌,因此您不会丢失太多信息。
整个模型可能是这样的:
model_lstm = Sequential()
model_lstm.add(LSTM(50, return_sequences=False, input_shape=(X_train.shape[1], X_train.shape[2])))
model_lstm.add(Dropout(0.5))
model_lstm.add(Dense(1))
model_lstm.compile(loss='mse', optimizer='rmsprop')
如果你想要更多层,它将变成:
model_lstm = Sequential()
model_lstm.add(LSTM(64, return_sequences=True, dropout=0.5, input_shape=(X_train.shape[1], X_train.shape[-1])))
model_lstm.add(Dropout(0.5))
model_lstm.add(LSTM(32, return_sequences=False, dropout=0.5))
model_lstm.add(Dense(1))
model_lstm.compile(loss='mse', optimizer='rmsprop')
其实我想知道如何所有特征,比如说10个技术指标特征,都可以帮助预测一个价格柱?
不知道我是否理解正确。但这就是机器学习的作用,它试图找到特征之间的相关性以及如何使用它们来预测某些内容。因此,也许“DE30”对价格有(或似乎有)影响,因此很有帮助。这是你的问题吗?
从不同的在线资源中,大多数人都在预测一只具有“收盘价”等功能的股票 我想这是为了简化。因此他们只使用了一项功能
让我知道这是否是您所要求的..