#!/usr/bin/env python
# coding: utf-8
# In[1]:
import os # 导入os模块用于操作系统相关函数
from copy import deepcopy # 导入copy模块的deepcopy函数,用于创建对象的深层副本
import numpy # 导入numpy库进行数值操作
import random # 导入random模块用于生成随机数
import datetime # 导入datetime模块用于处理日期和时间
import math # 导入math模块进行数学运算
import pandas as pd # 导入pandas库进行数据操作和分析
import numpy as np # 导入numpy并使用别名"np"以方便使用
import matplotlib.pyplot as plt # 导入matplotlib库进行数据可视化操作
from PyEMD import CEEMDAN # 从PyEMD库导入CEEMDAN模块
from sampen import sampen2 # 从sampen库导入sampen2模块
from vmdpy import VMD # 从vmdpy库导入VMD模块
import tensorflow as tf # 导入tensorflow库进行机器学习和深度学习
from sklearn.cluster import KMeans # 从sklearn.cluster库导入KMeans模块
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error, mean_absolute_percentage_error # 导入评估指标函数
from sklearn.preprocessing import MinMaxScaler # 从sklearn.preprocessing库导入MinMaxScaler模块用于特征缩放
from tensorflow.keras.models import Sequential # 导入Sequential模型用于构建神经网络
from tensorflow.keras.layers import Dense, Activation, Dropout, LSTM # 导入神经网络层
from tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping # 导入回调函数
import warnings # 导入warnings库用于忽略警告
from scipy.fftpack import hilbert, fft, ifft # 导入傅里叶变换相关函数
from math import log # 导入log函数
from typing import List # 导入List类型用于类型提示
warnings.filterwarnings("ignore") # 忽略警告消息
# In[2]:
#更多模型搜索机器学习之心,支持模型定制
# In[3]:
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# In[4]:
df_raw_data = pd.read_csv('焦作.csv', usecols=[0, 1]) # 从名为'焦作.csv'的CSV文件中读取数据,只使用第一列和第二列的数据创建DataFrame对象
X = 'AQI' # 将字符串'AQI'赋值给变量X,表示使用该列作为特征
series_close = pd.Series(df_raw_data[X].values, index=df_raw_data['time']) # 使用列名为X的数据创建Series对象,使用'Date'列作为索引
test = df_raw_data[X].values[int(len(df_raw_data[X].values)*0.8):] # 从X列的数据中提取后80%部分,并将结果存储在test变量中
# In[5]:
timestep = 30 # 定义时间步数,用于创建训练集和测试集
tau = 0. # 设置VMD分解的参数tau,用于控制模态函数的带宽
DC = 0 # 设置VMD分解的参数DC,用于控制是否提取直流分量
init = 1 # 设置VMD分解的参数init,用于设置初始模态函数数量
tol = 1e-7 # 设置VMD分解的参数tol,用于控制停止迭代的阈值#更多模型搜索机器学习之心,支持模型定制
# In[6]:
#白鲸优化
def BWO(n, tmax, lb, ub, nd, fobj):
# BWO函数接受一些参数来执行算法
# n: 种群大小
# tmax: 最大迭代次数
# lb: 位置的下界
# ub: 位置的上界
# nd: 位置的维度
# fobj: 适应值函数
# 记录每轮更新最优解
best_fval = [] # 用于存储每轮迭代的最优解值
# 位置矩阵
x = lb + np.random.random((n, nd)) * (ub - lb)
# 创建一个n行nd列的矩阵x,每个元素的取值范围在lb和ub之间
# 适应值矩阵
fobj_list = [fobj(x[i, ...]) for i in range(n)]
# 计算每个位置的适应值
fx = np.array(fobj_list)
# 将适应值转换为NumPy数组
#更多模型搜索机器学习之心,支持模型定制
# 适应值拷贝矩阵
temp_fx = deepcopy(fx)
# 创建适应值的副本,用于后续比较
#更多模型搜索机器学习之心,支持模型定制
# 最优解和最优解值
xposbest = x[np.argmin(fx)]
# 找到适应值最小的位置,将其作为最优解位置
fvalbest = min(fx)
# 找到适应值的最小值,将其作为最优解值
best_fval.append(fvalbest)
# 将最优解值添加到列表中,用于记录每轮迭代的最优解值
# 循环更新
for t in range(1, tmax + 1):
# 位置拷贝矩阵
temp_x = deepcopy(x)
# 创建一个临时的位置矩阵,用于存储更新后的位置
#更多模型搜索机器学习之心,支持模型定制
# 鲸落概率
wf = 0.1 - 0.05 * (t / tmax) # 根据当前迭代次数计算鲸落概率wf,概率随迭代次数递减
# 计算每只白鲸的平衡因子bf
b0 = np.random.random(n) # 生成一个长度为n的随机数数组,取值范围在0和1之间
for b0_index in range(len(b0)):
while b0[b0_index] == 0:
b0[b0_index] = np.random.random()
# 将平衡因子中的0替换为一个新的随机数,确保平衡因子不为0
bf = b0 * (1 - t / (2 * tmax)) # 根据当前迭代次数计算每只白鲸的平衡因子bf,随着迭代次数增加,平衡因子逐渐减小
# 更新每一只白鲸位置
for i in range(n):
# 探索阶段
if bf[i] > 0.5: # 如果当前位置的bf大于0.5
r1 = np.random.random() # 生成一个随机的浮点数r1
r2 = np.random.random() # 生成一个随机的浮点数r2
while r1 == 0: # 如果r1等于0
r1 = np.random.random() # 重新生成一个随机的浮点数r1
while r2 == 0: # 如果r2等于0
r2 = np.random.random() # 重新生成一个随机的浮点数r2
# 选择随机白鲸
r = np.random.randint(0, n) # 生成一个范围在0到n之间的随机整数r
while r == i: # 如果r等于当前鲸鱼的索引i
r = np.random.randint(0, n) # 重新生成一个范围在0到n之间的随机整数r
pj = np.arange(nd) # 生成一个从0到nd-1的数组pj
np.random.shuffle(pj) # 打乱数组pj的顺序
if nd <= n / 5: # 如果nd小于等于n/5
temp_x[i, pj[0]] = x[i, pj[0]] + (x[r, pj[0]] - x[i, pj[0]]) * (1 + r1) * np.sin(2 * np.pi * r2)
temp_x[i, pj[1]] = x[i, pj[1]] + (x[r, pj[1]] - x[i, pj[1]]) * (1 + r1) * np.cos(2 * np.pi * r2)
else:
for j in range(int(nd / 2)): # 对于从0到nd/2-1的每个j
temp_x[i, 2 * j] = x[i, 2 * j] + (x[r, pj[1]] - x[i, 2 * j]) * (1 + r1) * np.sin(2 * np.pi * r2)
temp_x[i, 2 * j + 1] = x[i, 2 * j + 1] + (x[r, pj[1]] - x[i, 2 * j + 1]) * (1 + r1) * np.cos(
2 * np.pi * r2)
# 开发阶段
else:#更多模型搜索机器学习之心,支持模型定制
r3 = np.random.random() # 生成一个随机的浮点数r3
r4 = np.random.random() # 生成一个随机的浮点数r4
while r3 == 0: # 如果r3等于0
r3 = np.random.random() # 重新生成一个随机的浮点数r3
while r4 == 0: # 如果r4等于0
r4 = np.random.random() # 重新生成一个随机的浮点数r4
c1 = 2 * r4 * (1 - (t / tmax)) # 计算c1值
# 选择一个与当前鲸鱼(i)不同的随机白鲸(r)
r = np.random.randint(0, n) # 生成一个范围在0到n之间的随机整数r
while r == i: # 如果r�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.Python实现CEEMDAN-BWO-VMD-BWO-LSTM时间序列预测(完整源码和数据) anaconda + pycharm + python +Tensorflow 注意事项:保姆级注释,几乎一行一注释,方便小白入门学习! 2.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 4.作者介绍:某大厂资深算法工程师,从事Matlab、Python算法仿真工作8年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![ipynb](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 3 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/c33022a554e649088c00481031b45458_kjm13182345320.jpg!1)
机器学习之心
- 粉丝: 1w+
- 资源: 809
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)