基于BP神经网络使用开盘价、最高价、最低价预测收盘价

以下是本文所用数据~~~

基于BP神经网络使用开盘价、最高价、最低价预测收盘价_第1张图片

 一、直接上手撸代码

import pandas as pd
import numpy as np
import math

data = pd.read_excel('上证指数.xls')
data = np.array(data.iloc[3:-1,1:])

e = 1
ita = 0.0035
#sigmoid
def sigmoid(x):
    return 1/(1+np.exp(-x))
#sigmoid导函数
def sigmoid_derivation(x):
    return np.exp(x)/(np.exp(x)+1)**2
#将整个矩阵归一化
max1 = data.max(axis = 0)
min1 = data.min(axis = 0)
t = np.empty((len(data),4))
for i in range(4):
    t[:,i] = (data[:,i]-min1[i])/(max1[i]-min1[i])
#截取训练集和测试集,这里使用了最后一天为测试集
train = t[:-1,:-1]#训练集
train_result = t[:-1,-1]#训练结果
test = t[-1,:-1]#测试集
test_result = t[-1,-1]#测试结果
#初始化权重和偏置值
w2 = np.random.random((3,3))
b2 = np.random.random((3,1))
w3 = np.random.random((1,3))
b3 = np.random.random((1,1))
i = 0
while i

输出结果为:

基于BP神经网络使用开盘价、最高价、最低价预测收盘价_第2张图片

二、调库代码

import pandas as pd
import numpy as np
import math
from sklearn.neural_network import MLPRegressor,MLPClassifier

data = pd.read_excel('上证指数.xls')
data = np.array(data.iloc[3:-1,1:])

data1 = np.array(data)

X = data1[:, 0:2]
Y = data1[:, 2]
max1 = data.max(axis = 0)
min1 = data.min(axis = 0)
t = np.empty((len(data),4))
for i in range(4):
    t[:,i] = (data[:,i]-min1[i])/(max1[i]-min1[i])
#截取训练集和测试集,这里使用了最后一天为测试集
train = t[:-1,:-1]#训练集
train_result = t[:-1,-1]#训练结果
test = t[-1,:-1]#测试集
test_result = t[-1,-1]#测试结果 


clf = MLPRegressor(hidden_layer_sizes=(4,1), activation='relu',solver='adam',alpha=0.0001,max_iter=2000)
clf = clf.fit(train,train_result)
pred = clf.predict(test.reshape(1, -1))
print('回归预测结果:', pred)

print('预测值为:',pred*(max1[3]-min1[3])+min1[3])
print('真实数据为:{}'.format(test_result*(max1[3]-min1[3])+min1[3]))
print('误差为:{}'.format((pred*(max1[3]-min1[3])+min1[3]) - (test_result*(max1[3]-min1[3])+min1[3])))

输出结果为:

 

你可能感兴趣的:(神经网络,python,机器学习)