创新实训模型部分-补充2

ds,emotion_val,predict,topic
02/01,1.6666666666666667,0,zns
02/02,1.6666666666666667,0,zns
02/03,0.06666666666666667,0,zns
02/04,1.6666666666666667,0,zns
02/05,1.4,0,zns
02/06,0.9333333333333333,0,zns
02/07,0.6,0,zns
02/08,2.0,0,zns
02/09,1.4666666666666666,0,zns
02/10,1.2,0,zns
02/11,0.9333333333333333,0,zns
02/12,1.4,0,zns
02/13,1.2,0,zns
02/14,1.7333333333333334,0,zns
02/15,1.4666666666666666,0,zns
02/16,2.0,0,zns
02/17,1.4,0,zns
02/18,1.4666666666666666,0,zns
02/19,1.9333333333333333,0,zns
02/20,1.7333333333333334,0,zns
02/21,2.0,0,zns
02/22,1.0666666666666667,0,zns
02/23,1.7333333333333334,0,zns
02/24,1.4,0,zns
02/25,1.4,0,zns
02/26,1.6666666666666667,0,zns
02/27,1.0666666666666667,0,zns
02/28,1.6666666666666667,0,zns
02/29,2.0,0,zns
03/01,1.6666666666666667,0,zns
03/02,2.0,0,zns
03/03,1.4666666666666666,0,zns
03/04,1.7333333333333334,0,zns
03/05,1.7333333333333334,0,zns
03/06,1.7333333333333334,0,zns
03/07,1.9333333333333333,0,zns
03/08,1.6,0,zns
03/09,1.2,0,zns
03/10,1.4666666666666666,0,zns
03/11,1.9333333333333333,0,zns
03/12,1.7333333333333334,0,zns
03/13,1.6,0,zns
03/14,1.7333333333333334,0,zns
03/15,1.0666666666666667,0,zns
03/16,1.4,0,zns
03/17,1.4,0,zns
03/18,1.4,0,zns
03/19,0.6,0,zns
03/20,1.6666666666666667,0,zns
03/21,2.0,0,zns
03/22,1.2,0,zns
03/23,1.1333333333333333,0,zns
03/24,1.3333333333333333,0,zns
03/25,1.4666666666666666,0,zns
03/26,2.0,0,zns
03/27,1.7333333333333334,0,zns
03/28,0.8666666666666667,0,zns
03/29,2.0,0,zns
03/30,1.2666666666666666,0,zns
03/31,1.4666666666666666,0,zns
04/01,1.4666666666666666,0,zns
04/02,1.3333333333333333,0,zns
04/03,1.4666666666666666,0,zns
04/04,2.0,0,zns
04/05,1.7333333333333334,0,zns
04/06,2.0,0,zns
04/07,0.6666666666666666,0,zns
04/08,1.7333333333333334,0,zns
04/09,1.4666666666666666,0,zns
04/10,1.7333333333333334,0,zns
04/11,1.4,0,zns
04/12,1.4666666666666666,0,zns
04/13,1.7333333333333334,0,zns
04/14,1.7333333333333334,0,zns
04/15,0.6666666666666666,0,zns
04/16,0.5333333333333333,0,zns
04/17,2.0,0,zns
04/18,1.2,0,zns
04/19,1.4,0,zns
04/20,1.2,0,zns
04/21,2.0,0,zns
04/22,1.7333333333333334,0,zns
04/23,1.4666666666666666,0,zns
04/24,1.6666666666666667,0,zns
04/25,1.4,0,zns
04/26,1.4666666666666666,0,zns
04/27,2.0,0,zns
04/28,1.7333333333333334,0,zns
04/29,2.0,0,zns
04/30,1.4,0,zns
05/01,1.4,0,zns
05/02,2.0,0,zns
05/03,1.4666666666666666,0,zns
05/04,2.0,0,zns
05/05,2.0,0,zns
05/06,1.9333333333333333,0,zns
05/07,1.0666666666666667,0,zns
05/08,1.7333333333333334,0,zns
05/09,0.8,0,zns
05/10,1.7333333333333334,0,zns
05/11,0.6666666666666666,0,zns
05/12,2.0,0,zns
05/13,1.2,0,zns
05/14,0.6666666666666666,0,zns
05/15,2.0,0,zns
05/16,1.3333333333333333,0,zns
05/17,1.4666666666666666,0,zns
05/18,1.1333333333333333,0,zns
05/19,1.2,0,zns
05/20,1.6666666666666667,0,zns
05/21,0.8,0,zns
05/22,2.0,0,zns
05/23,1.8666666666666667,0,zns
05/24,1.4666666666666666,0,zns
05/25,1.4666666666666666,0,zns
05/26,2.0,0,zns
05/27,1.4666666666666666,0,zns
05/28,1.6666666666666667,0,zns
05/29,1.4666666666666666,0,zns
05/30,2.0,0,zns
05/31,2.0,0,zns

数据展示

import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
import pandas as pd
import os
from keras.models import Sequential, load_model
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# 将整型变为float
dataframe = pd.read_csv('dataraw1.csv', usecols=[2], engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
# 归一化 在下一步会讲解
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)

train_size = int(len(dataset) * 0.65)
trainlist = dataset[:train_size]
testlist = dataset[train_size:]

def create_dataset(dataset, timesteps=36, predict_size=6):  # 构造数据集
    datax = []  # 构造x
    datay = []  # 构造y
    for each in range(len(dataset) - timesteps - predict_steps):
        x = dataset[each:each + timesteps, 0]
        y = dataset[each + timesteps:each + timesteps + predict_steps, 0]
        datax.append(x)
        datay.append(y)
    return np.array(datax), np.array(datay)

timesteps = 9
predict_steps = 10
trainX, trainY = create_dataset(trainlist, timesteps, predict_steps)
testX, testY = create_dataset(testlist, timesteps, predict_steps)

trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = np.reshape(testX, (testX.shape[0], testX.shape[1], 1))

# create and fit the LSTM network
model = Sequential()
model.add(Bidirectional(LSTM(128, input_shape=(timesteps, 1), return_sequences=True)))
model.add(Dropout(0.5))
model.add(Bidirectional(LSTM(128, return_sequences=True)))
model.add(Bidirectional(LSTM(64, return_sequences=False)))
model.add(Dense(predict_steps))
model.compile(loss="mean_squared_error", optimizer="adam")
model.fit(trainX, trainY, epochs=1000, batch_size=10)
model.save(os.path.join("DATA", "Test" + ".h5"))
# make predictions

predict_xlist = []
predict_y = []  # 添加预测y列表
predict_xlist.extend(dataset[dataset.shape[0] - timesteps:dataset.shape[0], 0].tolist())
while len(predict_y) < 30:
    predictx = np.array(predict_xlist[
                        -timesteps:])  # 从最新的predict_xlist取出timesteps个数据,预测新的predict_steps个数据(因为每次预测的y会添加到predict_xlist列表中,为了预测将来的值,所以每次构造的x要取这个列表中最后的timesteps个数据词啊性)
    predictx = np.reshape(predictx, (1, timesteps, 1))  # 变换格式,适应LSTM模型
    lstm_predict = model.predict(predictx)
    predict_xlist.extend(lstm_predict[0])  # 将新预测出来的predict_steps个数据,加入predict_xlist列表,用于下次预测
    # invert
    lstm_predict = scaler.inverse_transform(lstm_predict)
    predict_y.extend(lstm_predict[0])
l = predict_y
y_ture = np.array(dataset[-30:])
train_score = np.sqrt(mean_squared_error(y_ture, predict_y))
print("train score RMSE: %.2f" % train_score)
dataframe1 = pd.read_csv('dataraw.csv', usecols=[0])
dfd = dataframe1.values
topic = []
date = dfd[-1][0]
date1 = []
pre = []
pla = []
tes = []
testPredict = predict_y
for jk in range(0, len(testPredict)):
    tes.append(testPredict[jk])
    if jk < 9 :
        date1.append('6/0'+str(jk + 1))
    else:
        date1.append('6/' + str(jk + 1))
    topic.append('trump')
    pre.append('1')
    pla.append('1')
data = {
    'ds': date1,
    'emotion_val': tes,
    'topic': topic,
    'predict': pre


}
df = pd.DataFrame(data)
df.to_csv('Result.csv', index=False)
dataframe11 = pd.read_csv('result5.csv', usecols=[2], engine='python')
dataset11 = dataframe11.values
dataset11 = dataset11.astype('float32')
kk = dataset11.tolist()
kk = kk[:len(l)]
zz = []
for i in range(len(l)):
    zz.append(kk[i][0])
plt.plot(l)
plt.plot(dataset11)
plt.show()
data111 = pd.DataFrame({
    'Result':l,
    'Target': zz
})
corr = data111.corr()
print(corr)
kl = np.sqrt(mean_squared_error(l,zz))
print('mean_squared_error:'+str(kl))

双向LSTM尝试
结果不如普通的LSTM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值