基于 lstm 的股票收盘价预测 -- python
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于 lstm 的股票收盘价预测 -- python,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3515字,纯文字阅读大概需要6分钟。
内容图文
![基于 lstm 的股票收盘价预测 -- python](/upload/InfoBanner/zyjiaocheng/815/837f1e3b6bec4f5e99cc073a15f79be6.jpg)
导入 MinMaxScaler 时会报错 “from . import _arpack ImportError: DLL load failed: 找不到指定的程序。”
#import datetime import pandas as pd import numpy as np #from numpy import row_stack,column_stack import tushare as ts #import matplotlib import matplotlib.pyplot as plt #from matplotlib.pylab import date2num #from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY #from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc from sklearn.preprocessing import MinMaxScaler #https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#sphx-glr-auto-examples-preprocessing-plot-all-scaling-py from keras.models import Sequential from keras.layers import LSTM, Dense, Activation df=ts.get_hist_data('601857',start='2016-06-15',end='2018-01-12') dd=df[['open','high','low','close']] #print(dd.values.shape[0]) dd1=dd .sort_index() dd2=dd1.values.flatten() dd3=pd.DataFrame(dd1['close']) def load_data(df, sequence_length=10, split=0.8): #df = pd.read_csv(file_name, sep=',', usecols=[1]) #data_all = np.array(df).astype(float) data_all = np.array(df).astype(float) scaler = MinMaxScaler() data_all = scaler.fit_transform(data_all) data = [] for i in range(len(data_all) - sequence_length - 1): data.append(data_all[i: i + sequence_length + 1]) reshaped_data = np.array(data).astype('float64') #np.random.shuffle(reshaped_data) # 对x进行统一归一化,而y则不归一化 x = reshaped_data[:, :-1] y = reshaped_data[:, -1] split_boundary = int(reshaped_data.shape[0] * split) train_x = x[: split_boundary] test_x = x[split_boundary:] train_y = y[: split_boundary] test_y = y[split_boundary:] return train_x, train_y, test_x, test_y, scaler def build_model(): # input_dim是输入的train_x的最后一个维度,train_x的维度为(n_samples, time_steps, input_dim) model = Sequential() model.add(LSTM(input_dim=1, output_dim=6, return_sequences=True)) #model.add(LSTM(6, input_dim=1, return_sequences=True)) #model.add(LSTM(6, input_shape=(None, 1),return_sequences=True)) """ #model.add(LSTM(input_dim=1, output_dim=6,input_length=10, return_sequences=True)) #model.add(LSTM(6, input_dim=1, input_length=10, return_sequences=True)) model.add(LSTM(6, input_shape=(10, 1),return_sequences=True)) """ print(model.layers) #model.add(LSTM(100, return_sequences=True)) #model.add(LSTM(100, return_sequences=True)) model.add(LSTM(100, return_sequences=False)) model.add(Dense(output_dim=1)) model.add(Activation('linear')) model.compile(loss='mse', optimizer='rmsprop') return model def train_model(train_x, train_y, test_x, test_y): model = build_model() try: model.fit(train_x, train_y, batch_size=512, nb_epoch=300, validation_split=0.1) predict = model.predict(test_x) predict = np.reshape(predict, (predict.size, )) except KeyboardInterrupt: print(predict) print(test_y) print(predict) print(test_y) try: fig = plt.figure(1) plt.plot(predict, 'r:') plt.plot(test_y, 'g-') plt.legend(['predict', 'true']) except Exception as e: print(e) return predict, test_y if __name__ == '__main__': #train_x, train_y, test_x, test_y, scaler = load_data('international-airline-passengers.csv') train_x, train_y, test_x, test_y, scaler =load_data(dd3, sequence_length=10, split=0.8) train_x = np.reshape(train_x, (train_x.shape[0], train_x.shape[1], 1)) test_x = np.reshape(test_x, (test_x.shape[0], test_x.shape[1], 1)) predict_y, test_y = train_model(train_x, train_y, test_x, test_y) predict_y = scaler.inverse_transform([[i] for i in predict_y]) test_y = scaler.inverse_transform(test_y) fig2 = plt.figure(2) plt.plot(predict_y, 'g:') plt.plot(test_y, 'r-') plt.show()
内容总结
以上是互联网集市为您收集整理的基于 lstm 的股票收盘价预测 -- python全部内容,希望文章能够帮你解决基于 lstm 的股票收盘价预测 -- python所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】