【发布时间】:2019-07-19 14:49:07
【问题描述】:
我用 R 中的神经网络包构建了一个神经网络来预测股票价格。我的模型和代码运行良好,但准确率在 97-99% 左右,这让我有点怀疑:
我的模型是否过拟合?
This 是我正在使用的数据集(已经缩放),this 是我的原始数据集(未缩放),我需要计算其准确性。这是构建和测试模型的代码:
normalize <- function(x) {
return ((x - min(x)) / (max(x) - min(x)))
}
nn_df <- as.data.frame(lapply(nn_df, normalize))
nn_df_train = as.data.frame(nn_df[1:1965,]) #1965
nn_df_test = as.data.frame(nn_df[1966:2808,]) #843
# NN for Sentiment GI
nn_model <- neuralnet(GSPC.Close ~ GSPC.Open +GSPC.Low + GSPC.High + SentimentGI, data = nn_df_train, hidden=5, linear.output=TRUE, threshold=0.01)
plot(nn_model)
nn_model$result.matrix
nn_pred <- compute(nn_model, nn_df_test)
nn_pred$net.result
results <- data.frame(actual = nn_df_test$GSPC.Close, prediction = nn_pred$net.result)
results
#calc accuracy
predicted = results$prediction * abs(diff(range(nn_org$GSPC.Close))) + min(nn_org$GSPC.Close)
actual = results$actual * abs(diff(range(nn_org$GSPC.Close))) + min(nn_org$GSPC.Close)
comparison = data.frame(predicted,actual)
#deviation=((actual-predicted)/actual)
deviation= abs((actual-predicted)/actual)
comparison=data.frame(predicted,actual,deviation)
accuracy=1-abs(mean(deviation))
accuracy
【问题讨论】:
-
您是否在验证集上运行过?您通常将数据分成几个子集,其中一个用于测试模型的泛化程度/过拟合程度。
-
不,我只是将数据分为训练 (70%) 和测试 (30%)。从代码中可以看出,我使用测试来测试我的模型。
-
嗨,欢迎来到 Stack Overflow。我更改了您的问题的标题及其文本的措辞,以明确您的要求。你没有问任何关于股票价格的事情。你在问你的模型是否过拟合。但是,我不确定您的问题是否适合 Stack Overflow。请查看stats.stackexchange.com 并考虑在那里询问。祝你好运!
标签: r machine-learning neural-network recurrent-neural-network