欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-05-22

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

 一、直接上手撸代码

import pandas as pdimport numpy as npimport mathdata = pd.read_excel('上证指数.xls')data = np.array(data.iloc[3:-1,1:])e = 1ita = 0.0035#sigmoiddef 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 = 0while i

输出结果为:

二、调库代码

import pandas as pdimport numpy as npimport mathfrom sklearn.neural_network import MLPRegressor,MLPClassifierdata = 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])))

输出结果为:

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。