2022数学建模LSTM

  • 数据导入与清洗于网络设值
    • 归一化
    • 数据集和训练集的划分
    • LSTM模型建立
    • 训练模型
    • 迭代图像
    • 训练结果

数据导入与清洗于网络设值

在数据导入时我使用的是pd.read_csv函数

#设置LSTM的时间窗等参数
window=1
lstm_units = 8
dropout = 0.001
epoch=200
#读取数据
data1=pd.read_csv('GOLD_2021.csv')
data2=pd.read_csv('LBMA-GOLD.csv')
test_ata=data2.iloc[:,0]
data1.drop('1978/12/29',axis = 1,inplace = True)
df1=data1
df1.rename(columns={'226':'Value'},inplace=True)
df1.dropna(inplace=True)
#df1.tail()
print(data1)

window:时间窗
lstm_units :基本单元
dropout :步长
epoch:迭代次数

归一化

from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
df0=min_max_scaler.fit_transform(df1)
df = pd.DataFrame(df0, columns=df1.columns)
input_size=len(df.iloc[1,:])

数据集和训练集的划分

#构建lstm输入
stock=df
seq_len=window
amount_of_features = len(stock.columns)#有几列
data = stock.as_matrix() #pd.DataFrame(stock) 表格转化为矩阵
sequence_length = seq_len + 1#序列长度
result = []
for index in range(len(data) - sequence_length):#循环数据长度-sequence_length次result.append(data[index: index + sequence_length])#第i行到i+sequence_length
result = np.array(result)#得到样本,样本形式为6天*3特征
row =9827#划分训练集测试集
train = result[:int(row), :]
x_train = train[:, :-1]
y_train = train[:, -1][:,-1]
x_test = result[int(row):, :-1]
y_test = result[int(row):, -1][:,-1]
#reshape成 6天*3特征
X_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))
X_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features))
print(y_train[:10], X_train.shape, y_train.shape, X_test.shape, y_test.shape)
print(x_train.shape[0], x_train.shape[1], amount_of_features)

LSTM模型建立

#建立LSTM模型 训练
inputs=Input(shape=(window, input_size))
model=Conv1D(filters = lstm_units, kernel_size = 1, activation = 'sigmoid')(inputs)#卷积层
model=MaxPooling1D(pool_size = window)(model)#池化层
model=Dropout(dropout)(model)#droupout层
model=Bidirectional(LSTM(lstm_units, activation='tanh'), name='bilstm')(model)#双向LSTM层
attention=Dense(lstm_units*2, activation='sigmoid', name='attention_vec')(model)#求解Attention权重
model=Multiply()([model, attention])#attention与LSTM对应数值相乘
outputs = Dense(1, activation='tanh')(model)#输入只有一个
model = Model(inputs=inputs, outputs=outputs)
model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])#损失函数,优化器,比较函数
model.summary()#展示模型结构

训练模型

history=model.fit(X_train, y_train, epochs = epoch, batch_size = 32,shuffle=False,validation_data=(X_test, y_test)) #训练模型epoch次

迭代图像

#迭代图像
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs_range = range(epoch)
plt.plot(epochs_range, loss, label='Train Loss')
plt.plot(epochs_range, val_loss, label='Test Loss')
plt.legend(loc='upper right')
plt.title('Train and Val Loss')
plt.show()
plt.savefig("LSTM_GOLD1.png")

训练结果

#在训练集上的拟合结果
y_train_predict=model.predict(X_train)
y_train_predict=y_train_predict[:,0]
draw=pd.concat([pd.DataFrame(y_train),pd.DataFrame(y_train_predict)],axis=1)
draw.iloc[0:row,0].plot(figsize=(12,6))
draw.iloc[0:row,1].plot(figsize=(12,6))
plt.legend(('real', 'predict'),fontsize='15')
plt.title("Train Data",fontsize='30') #添加标题

此文仅作为个人笔记,有问题可以私信

2022美赛LSTM相关推荐

  1. 2022美赛E题(森林的碳封存)——赛题解读解题思路

    2022美赛E题(森林的碳封存)--赛题解读&解题思路 2023美赛题分析已经出了! 赛题目的 一. 预测碳吸收模型 ==1.1. 问题分析==: 1.2. 查资料:碳排放怎么估计&碳 ...

  2. 数学建模学习(64):2022美赛C题股票投资策略回顾讲解,教你正确打数学建模比赛

    比赛结束,所以我才正式发一下自己的思路,美赛国赛我不会发比赛思路.我们来聊一聊美赛C题到底在怎么理解? 一.读题,教你正确读题 首先说一下我也犯的大忌:大家都知道我们大多数数学建模都是英文版的,题目也 ...

  3. 2022美赛E题思路记录

    从大二开始参加数学建模,到现在研三,一转眼已经过了将近6年了,由于没有综测的要求了,这一次第一次以旁观者身份参与美赛.参加两次美赛,一次成绩是M奖,另一次是H奖,所以有一点经验分享给童鞋们,如果大家有 ...

  4. 2022美赛A题自行车到底怎么骑

    今年美赛A题就是2021年东京奥运会奥地利女博士后Anna Kiesenhofer单枪匹马勇夺女子公路自行车比赛金牌故事的翻版,主题问题就是求解自行车运动员在近40km的赛程中应该如何分配功率以获得更 ...

  5. 数学建模学习(63):2022美赛单变量深度学习LSTM 时间序列分析预测

    换汤不换药,有手就会 基础肥皂案例 数据集如下: 你的数据只要能跟它合上就行,年份和数据. 你只需要修改的地方: 套上去就完事,完整代码: # coding=gbk """ ...

  6. 2022美赛C题 预测模型

    由于影响资产价格的波动机理非常复杂,难以简单的运用数学模型加以解释,数据量较大需预处理且非平稳波动,很难利用传统的统计学模型和计量经济学模型预测.而神经网络这种高度复杂的非线性自学习抽象人工模拟,具有 ...

  7. 2022美赛C题题目及思路--交易策略

    背景:市场交易者经常买卖波动较大的资产,以实现总回报最大化为目标.通常每笔买卖都 有佣金.其中两种资产是黄金和比特币. 图 1. 黄金日价格,美元每金衡盎司.资料来源:伦敦金银市场协会,2021 年 ...

  8. 2022美赛F题题目及思路--人人为我,我(空间)为人人

    背景 世界上大多数国家都签署了 1967 年的联合国<外层空间条约>,同意"探索和利用外层空间, 包括月球和其他天体,应为所有国家的利益和利益而进行,不论其程度如何经济或科学发展 ...

  9. 数学建模竞赛2022美赛

    文章目录 前言 一.中文底稿 摘要 1.问题重述 1.1 问题的背景 1.2 问题的重述 2.问题分析 2.1 问题一分析 2.2 问题二分析 2.3 问题三分析 2.4 问题四分析 3.模型假设 4 ...

  10. 2022美赛数学建模B题思路分享

    上次是飓风无人机三维装箱问题加图论扫图,这次是无人机加无线电设备布火灾预警图,盲猜下次是与海有关的灾害(手动滑稽)

最新文章

  1. iframe怎么用_怎么样减少无效URL的爬行和索引
  2. 窥见人工智能四十年 2019 CCF-GAIR全球人工智能与机器人峰会今日开幕
  3. windows下mysql慢查询开启的操作流程
  4. java bean与xml转换_Java Bean与xml互相转换的方法分析
  5. php string to array,php string转数组的方法
  6. ajax异步通讯 遮罩滚动栏,防止并发及误操作
  7. high definition audio感叹号_【网抑云文案】你知道红色感叹号吧,我对着它聊了184天。...
  8. (二)使用预定义模型 QStringListModel例子
  9. Spring集成Quartz定时任务
  10. 小学计算机打字比赛教案,小学信息技术二年级教案
  11. [暴力]JZOJ 100036 随机
  12. [LintCode] 翻转二叉树
  13. 一个简单的Matlab面向对象编程实例
  14. iOS开发月报#3|201809
  15. 产品设计:《广告设计与创意》
  16. win10录屏怎么用_不会用电脑录屏怎么办?教你两种录屏方式,少学一个都遗憾...
  17. ansys2017安装教程_abaqus2017安装教程 - 仿真模拟 - 小木虫 - 学术 科研 互动社区
  18. 关于手机上的卫星定位
  19. 发送打印任务后不打印
  20. 忧桑三角形,调了半天,真忧桑TAT

热门文章

  1. SQL Prompt 激活下载破解码注册码序列号,内有方法
  2. 计算机网络课程实验5——交换机VLAN
  3. 当游戏遇到区块链之链游经济系统思考
  4. 韩顺平java基础学习笔记
  5. 数据中台落地问题与建议-数字化架构设计(2)
  6. 2021年上半年系统分析师下午真题和答案解析
  7. Kepware 安装CD光盘教程
  8. zkeposx消费管理系统mysql_ZKEposx消费管理系统
  9. linux 常用脚本
  10. Linux脚本的创建