神经网络预测股票实例数据分析可视化"/>
R语言实现神经网络预测股票实例数据分析可视化
原文链接:/?p=5725
神经网络是一种基于现有数据创建预测的计算系统。
如何构建神经网络?
神经网络包括:
输入层:根据现有数据获取输入的层
隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测能力
输出层:基于输入和隐藏层的数据输出预测
用神经网络解决分类问题
在这个特定的例子中,我们的目标是开发一个神经网络来确定股票是否支付股息。
因此,我们使用神经网络来解决分类问题。通过分类,我们指的是按类别对数据进行分类的分类。例如,水果可分为苹果,香蕉,橙等。
我们的自变量如下:
fcfps:每股自由现金流量
income_growth:过去一年的盈利增长(%)
de:债务与权益比率
mcap:股票的市值
current_ratio:流动比率(或流动资产/流动负债)
我们首先设置目录并将数据加载到R环境中:
setwd("你的工作文件目录")
attach(mydata)
形成神经网络时最重要的过程之一是数据标准化。这涉及将数据调整到一致的比例,以便准确地比较预测值和实际值。无法对数据进行标准化通常会导致所有观察结果中的预测值保持不变,而与输入值无关。
我们在下面实现了这两种技术,但选择使用max-min标准化技术。
缩放标准化
scaleddata <-scale(mydata)
最大最小标准化
对于此方法,我们调用以下函数来标准化我们的数据:
normalize < - function(x){ return((x - min(x))/(max(x) - min(x)))
}
然后,我们使用lapply在我们现有的数据上运行该函数(我们将数据集称为加载到R中的数据集为mydata):
我们现在已经标准化了我们的新数据集并将其保存到名为_maxmindf_的数据框中:
我们的训练数据(训练集)基于80%的观测值。测试数据(测试集)基于剩余的20%的观察结果。
#训练和测试数据
trainset <- maxmindf\[1:160, \]
testset <- maxmindf\[161:200, \]
用神经网络训练模型
我们现在将_神经网络_库加载到R.
使用神经网络将依赖的_“红利”_变量“回归” 到其他自变量
根据hidden =(2,1)公式将隐藏层数设置为(2,1)
给定自变量对因变量(被除数)的影响假设是非线性的,linear.output变量设置为FALSE
阈值设置为0.01,这意味着如果迭代期间的误差变化小于1%,则模型不会进行进一步的优化
确定神经网络中隐藏层的数量并不是一门精确的科学。事实上,有些情况下,没有任何隐藏层,准确度可能会更高。因此,反复试验在这一过程中起着重要作用。
一种可能性是比较预测的准确性如何随着我们修改隐藏层的数量而改变。例如,对于该示例,使用(2,1)参数配置最终产生_92.5%的_分类准确度。
nn $ result .matrix
plot(nn)
我们的神经网络看起来像这样:
我们现在生成神经网络模型的误差,以及输入,隐藏层和输出之间的权重:
测试模型的准确性
如前所述,我们的神经网络是使用训练数据创建的。然后,我们将其与测试数据进行比较,以评估神经网络预测的准确性。
temp\_test < - subset(testset,select = c(“fcfps”,“earnings\_growth”,“de”,“mcap”,“current_ratio”))
head(temp_test)
nn.results < - compute(nn, temp_test)
结果< - data.frame(actual = testset $ dividend,prediction = nn.results $ net.result)
将预测结果与实际结果进行比较:
0.999985252611
混淆矩阵
然后,我们使用sapply对结果进行舍入,并创建一个混淆矩阵来比较真/假阳性和阴性的数量:
table(actual,prediction)prediction
actual 0 1 0 17 0 1 3 20
混淆矩阵用于确定由我们的预测生成的真实和错误的数量。该模型生成17个真阴性(0),20个真阳性(1),而有3个假阴性。
最终,我们在确定股票是否支付股息时产生_92.5%(37/40)的_准确率。
使用神经网络解决回归问题
在这个例子中,我们希望分析解释变量容量,汽油和小时数对因变量消费的影响。
数据标准化
同样,我们将数据标准化并分为训练和测试数据:
#最大最小标准化
normalize < - function(x){
} #训练和测试数据
trainset < - maxmindf \[1:32,\]
testset < - maxmindf \[33:40,\]
神经网络输出
然后我们运行我们的神经网络并生成我们的参数:
Intercept.to.1layhid1 1.401987575173
capacity.to.1layhid1 1.307794013481
gasoline.to.1layhid1 -3.102267882386
hours.to.1layhid1 -3.246720660493
Intercept.to.1layhid2 -0.897276576566
capacity.to.1layhid2 -1.934594889387
gasoline.to。 1layhid2 3.739470402932hours.to.1layhid2 1.973830465259
Intercept.to.2layhid1 -1.125920206855
1layhid.1.to.2layhid1 3.175227041522
1layhid.2.to.2layhid1 -2.419360506652
Intercept.to.consumption 0.683726702522
2layhid.1.to.consumption -0.545431580477
生成神经网络
以下是我们的神经网络的可视化结果:
点击标题查阅往期内容
【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析
左右滑动查看更多
01
02
03
04
模型验证
然后,我们通过比较从神经网络产生的估计汽油消费与测试输出中报告的实际消费来验证(或测试我们模型的准确性):
准确性
在下面的代码中,我们然后将数据转换回其原始格式,在平均绝对偏差的基础上产生90%的准确度(即估计和实际汽油消费之间的平均偏差平均为10%)。请注意,我们还将数据转换回标准值,因为它们之前使用max-min标准化方法进行了调整:
predicted=results$prediction * abs(diff(range(consumption))) + min(consumption)accuracy
可以看到我们使用(2,1)隐藏配置获得90%的准确率。这非常好,特别是考虑到我们的因变量是区间格式。但是,让我们看看我们是否可以让它更高!
如果我们现在在神经网络中使用(5,2)隐藏层节点配置会发生什么?这是生成的输出:
accuracy=1-abs(mean(deviation))
accuracy
\[1\] 0.9577401232
我们看到我们的准确率现已增加到近96%,表明修改隐藏节点的数量已经提高了我们的模型!
点击文末“阅读原文”
获取全文完整资料。
本文选自《R语言实现神经网络预测股票实例数据分析可视化》。
点击标题查阅往期内容
Python使用神经网络进行简单文本分类
Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性
【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享
数据分享|R语言用Keras长短期记忆LSTM神经网络分类分析问答文本数据
Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
更多推荐
R语言实现神经网络预测股票实例数据分析可视化
发布评论