- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近尝试完成一个神经网络来预测股市个股价格的波动,利用 Keras 作为网络框架,并使用 Quandl 来检索历史调整后的股票价格;在运行该程序时,我主要使用了单个教程中显示的程序范例和信息,其链接如下所示:
https://www.youtube.com/watch?v=EYnC4ACIt2g&t=2079s
但是,本教程使用了“sklearn”线性回归模块;我修改了程序以使用 Keras,它具有更强的定制能力。程序如下所示:
import tensorflow as tf
import keras
import numpy as np
import quandl
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
df = quandl.get("WIKI/FB")
df = df[['Adj. Close']]
forecast_out = 1
df['Prediction'] = df[['Adj. Close']].shift(-(forecast_out))
X = np.array(df.drop(['Prediction'], 1))
X = X[:-forecast_out]
y = np.array(df['Prediction'])
y = y[:-forecast_out]
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)
model = keras.models.Sequential()
model.add(keras.layers.Dense(units = 64, activation = 'relu'))
model.add(keras.layers.Dense(units = 1, activation = 'linear'))
model.compile(loss='mean_absolute_error',
optimizer='adam',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split = 0.2)
x_forecast = np.array(df.drop(['Prediction'], 1))[-forecast_out:]
print(x_forecast)
prediction = model.predict(x_train)
但是,在通过 model.fit() 命令使用提供的测试信息运行模型时,我收到了每个时期的损失和准确性的显示:
Train on 940 samples, validate on 236 samples
Epoch 1/5
940/940 [==============================] - 1s 831us/step - loss: 85.4464 - acc: 0.0000e+00 - val_loss: 76.7483 - val_acc: 0.0000e+00
Epoch 2/5
940/940 [==============================] - 0s 51us/step - loss: 65.6871 - acc: 0.0000e+00 - val_loss: 55.4325 - val_acc: 0.0000e+00
Epoch 3/5
940/940 [==============================] - 0s 52us/step - loss: 43.3484 - acc: 0.0000e+00 - val_loss: 30.5538 - val_acc: 0.0000e+00
Epoch 4/5
940/940 [==============================] - 0s 47us/step - loss: 16.5076 - acc: 0.0011 - val_loss: 1.3096 - val_acc: 0.0042
Epoch 5/5
940/940 [==============================] - 0s 47us/step - loss: 2.0529 - acc: 0.0043 - val_loss: 1.1567 - val_acc: 0.0000e+00
<keras.callbacks.History at 0x7ff1dfa19470>
鉴于我在测试此类范例方面的经验相对较少,我更想知道这种准确性是否令人满意;损失和准确率参数是否表明模型运行完美?它们之间有什么区别以及如何阅读它们?最后,Keras 如何描述它们?该模块的文档似乎没有提供足够的信息;然而,这可能是我对它们的检查造成的。感谢您的帮助。
最佳答案
您可能会在 CrossValidated 上获得有关神经网络/ML 的更好答案,但我可以尝试在这里帮助你。
一般来说,判断神经网络是否“正常”运行是非常非常困难的 - 因此根据我的经验,机器学习开发是一个非常迭代的过程,通过有根据的统计/数学猜测来进行试验和错误。
让我们首先对指标进行高级概述:
损失 = 模型的预测与您的数据“偏离”多远。
准确度 = 您的模型“正确”的预测百分比;即,如果您的模型是一个函数,则特定数据点的 model(x) = y。
令人满意的“准确性”是主观的,并且很大程度上取决于应用程序/模型/您的数据。但是,由于您正在尝试预测股票价格;即连续变量,你正在做回归,使用像准确性这样的指标对我来说没有多大意义。我可以告诉你,通过你的问题表述,你正在做回归——线性激活也是一个强烈的暗示。
要明白为什么准确性没有意义,如果我根据某些因素预测房价,我可能并不关心我有多少预测完全正确,而是更关心我的预测总体上有多接近。如果我的回归模型每房价折扣 1 美元,我的准确度仍然为 0,但我仍然有可能拥有一个好的模型。
相反,最小化损失函数可能是更好的思考方式。这样想:总的来说,您希望拟合输入变量的某些函数,使其“接近”真实输出。对于 linear regression ,损失函数是LMS(最小均方),本质上是残差的平均平方距离。这里使用平均绝对误差,它只是差值的平均绝对值。两种损失函数都有优点和缺点,我鼓励您在您的应用程序中研究这一点。
错误减少的事实是好的:这意味着您的模型近似的函数越来越接近训练数据(残差正在减少)。您的验证损失也不大于训练数据,这表明您也没有过度拟合数据。我鼓励您继续尝试。
关于python - 表征股票市场神经网络的 Keras 损失和准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59594496/
我有兴趣在 tf.keras 中训练一个模型,然后用 keras 加载它。我知道这不是高度建议,但我对使用 tf.keras 来训练模型很感兴趣,因为 tf.keras 更容易构建输入管道 我想利用
我进行了大量搜索,但仍然无法弄清楚如何编写具有多个交互输出的自定义损失函数。 我有一个神经网络定义为: def NeuralNetwork(): inLayer = Input((2,));
我正在阅读一篇名为 Differential Learning Rates 的文章在 Medium 上,想知道这是否可以应用于 Keras。我能够找到在 pytorch 中实现的这项技术。这可以在 K
我正在实现一个神经网络分类器,以打印我正在使用的这个神经网络的损失和准确性: score = model.evaluate(x_test, y_test, verbose=False) model.m
我最近在查看模型摘要时遇到了这个问题。 我想知道,[(None, 16)] 和有什么区别?和 (None, 16) ?为什么输入层有这样的输入形状? 来源:model.summary() can't
我正在尝试使用 Keras 创建自定义损失函数。我想根据输入计算损失函数并预测神经网络的输出。 我尝试在 Keras 中使用 customloss 函数。我认为 y_true 是我们为训练提供的输出,
我有一组样本,每个样本都是一组属性的序列(例如,一个样本可以包含 10 个序列,每个序列具有 5 个属性)。属性的数量总是固定的,但序列的数量(时间戳)可能因样本而异。我想使用这个样本集在 Keras
Keras 在训练集和测试集文件夹中发现了错误数量的类。我有 3 节课,但它一直说有 4 节课。有人可以帮我吗? 这里的代码: cnn = Sequential() cnn.add(Conv2D(32
我想编写一个自定义层,在其中我可以在两次运行之间将变量保存在内存中。例如, class MyLayer(Layer): def __init__(self, out_dim = 51, **kwarg
我添加了一个回调来降低学习速度: keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=100,
在 https://keras.io/layers/recurrent/我看到 LSTM 层有一个 kernel和一个 recurrent_kernel .它们的含义是什么?根据我的理解,我们需要 L
问题与标题相同。 我不想打开 Python,而是使用 MacOS 或 Ubuntu。 最佳答案 Python 库作者将版本号放入 .__version__ 。您可以通过在命令行上运行以下命令来打印它:
Keras 文档并不清楚这实际上是什么。我知道我们可以用它来将输入特征空间压缩成更小的空间。但从神经设计的角度来看,这是如何完成的呢?它是一个自动编码器,RBM吗? 最佳答案 据我所知,嵌入层是一个简
我想实现[http://ydwen.github.io/papers/WenECCV16.pdf]中解释的中心损失]在喀拉斯 我开始创建一个具有 2 个输出的网络,例如: inputs = Input
我正在尝试实现多对一模型,其中输入是大小为 的词向量d .我需要输出一个大小为 的向量d 在 LSTM 结束时。 在此 question ,提到使用(对于多对一模型) model = Sequenti
我有不平衡的训练数据集,这就是我构建自定义加权分类交叉熵损失函数的原因。但问题是我的验证集是平衡的,我想使用常规的分类交叉熵损失。那么我可以在 Keras 中为验证集传递不同的损失函数吗?我的意思是用
DL 中的一项常见任务是将输入样本归一化为零均值和单位方差。可以使用如下代码“手动”执行规范化: mean = np.mean(X, axis = 0) std = np.std(X, axis =
我正在尝试学习 Keras 并使用 LSTM 解决分类问题。我希望能够绘制 准确率和损失,并在训练期间更新图。为此,我正在使用 callback function . 由于某种原因,我在回调中收到的准
在 Keras 内置函数中嵌入使用哪种算法?Word2vec?手套?其他? https://keras.io/layers/embeddings/ 最佳答案 简短的回答是都不是。本质上,GloVe 的
我有一个使用 Keras 完全实现的 LSTM RNN,我想使用梯度剪裁,梯度范数限制为 5(我正在尝试复制一篇研究论文)。在实现神经网络方面,我是一个初学者,我将如何实现? 是否只是(我正在使用 r
我是一名优秀的程序员,十分优秀!