我正在尝试从头开始创建一个最基本的神经网络来预测苹果公司的股票。以下是我目前为止通过参考数据科学教程所得到的代码。然而,我现在正处于实际输入数据并确保其正确输入的阶段。我希望输入一个股票交易的pandas数据框。这是我的神经网络的设想。
- 5个输入节点(开盘价、收盘价、最高价、最低价、交易量) *注意 – 这将在一个带有日期时间索引的pandas数据框中
- 一个求和每个输入权重的激活函数
- 用于标准化值的Sigmoid函数
- 1个输出(调整后收盘价) *不确定应该使用什么作为实际值
然后,过程是使用反向传播技术进行调整。
import pandas as pdimport pandas_datareader as webimport matplotlib.pyplot as pltimport numpy as npdef sigmoid(x): return 1.0/(1+ np.exp(-x))def sigmoid_derivative(x): return x * (1.0 - x)class NeuralNetwork: def __init__(self, x, y): self.input = x self.weights1 = #会在我得到正确输入时计算 self.weights2 = #会在我得到正确输入时计算 self.y = y self.output = #会计算 def feedforward(self): self.layer1 = sigmoid(np.dot(self.input, self.weights1)) self.output = sigmoid(np.dot(self.layer1, self.weights2)) def backprop(self): #应用链式法则来寻找损失函数相对于weights2和weights1的导数 d_weights2 = np.dot(self.layer1.T, (2*(self.y - self.output) * sigmoid_derivative(self.output))) d_weights1 = np.dot(self.input.T, (np.dot(2*(self.y - self.output) * sigmoid_derivative(self.output), self.weights2.T) * sigmoid_derivative(self.layer1))) #用损失函数的导数(斜率)更新权重 self.weights1 += d_weights1 self.weights2 += d_weights2if __name__ == "__main__": X = #这里需要帮助 y = #这里需要帮助 nn = NeuralNetwork(X,y) for i in range(1500): nn.feedforward() nn.backprop() print(nn.output)
如果您有任何建议、更正或任何意见,请告诉我,因为我非常投入于学习神经网络。
谢谢。
回答:
直接在神经网络中使用Pandas是非常荒谬的。性能会非常差。您应该做的是传递底层的numpy数组。
X = df[['Open','Close','High','Low','Volume']].valuesy = df['adj close'].values
这回答了您的问题吗?