268 lines
68 KiB
Plaintext
268 lines
68 KiB
Plaintext
![]() |
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 1,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T07:29:51.887474Z",
|
|||
|
"start_time": "2023-05-06T07:29:45.336311Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"E:\\Pycharm\\Anaconda3\\lib\\site-packages\\requests\\__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.15) or chardet (3.0.4) doesn't match a supported version!\n",
|
|||
|
" warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import matplotlib.pyplot as plt\n",
|
|||
|
"# 导入matplotlib的pyplot模块,用于数据可视化。\n",
|
|||
|
"import tensorflow as tf\n",
|
|||
|
"# 导入tensorflow库,用于深度学习模型的构建和训练\n",
|
|||
|
"from vmdpy import VMD \n",
|
|||
|
"# 从vmdpy库导入VMD,用于变分模态分解\n",
|
|||
|
"import pandas as pd\n",
|
|||
|
"# 导入pandas库,用于数据处理和分析\n",
|
|||
|
"import warnings\n",
|
|||
|
"# 导入warnings库,用于控制警告消息\n",
|
|||
|
"warnings.filterwarnings(\"ignore\")\n",
|
|||
|
"# 设置忽略警告消息,通常用于减少输出中的不必要警告"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 2,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T07:30:07.694017Z",
|
|||
|
"start_time": "2023-05-06T07:30:06.640539Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"# 调用GPU加速\n",
|
|||
|
"gpus = tf.config.experimental.list_physical_devices(device_type='GPU')\n",
|
|||
|
"for gpu in gpus:\n",
|
|||
|
" tf.config.experimental.set_memory_growth(gpu, True)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 3,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T07:30:10.114152Z",
|
|||
|
"start_time": "2023-05-06T07:30:10.110150Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"# 用来正常显示中文标签\n",
|
|||
|
"plt.rcParams['font.sans-serif'] = ['Times New Roman']\n",
|
|||
|
"# 用来正常显示负号\n",
|
|||
|
"plt.rcParams['axes.unicode_minus'] = False"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 4,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T07:30:11.964131Z",
|
|||
|
"start_time": "2023-05-06T07:30:11.924656Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"df_raw_data = pd.read_csv('农林牧渔.csv', usecols=[0,1], encoding='gbk')\n",
|
|||
|
"# 使用pandas的read_csv函数读取CSV文件。\n",
|
|||
|
"# '农林牧渔.csv'是文件名。\n",
|
|||
|
"# usecols=[0,1]指定只读取CSV文件的第一列和第二列。\n",
|
|||
|
"# encoding='gbk'指定文件编码格式为GBK,GBK常用于中文字符编码。\n",
|
|||
|
"series_close = pd.Series(df_raw_data['收盘指数'].values, index=df_raw_data['发布日期'])\n",
|
|||
|
"# 创建一个pandas的Series对象。\n",
|
|||
|
"# df_raw_data['收盘指数'].values提取'收盘指数'列的值作为Series的数据。\n",
|
|||
|
"# index=df_raw_data['发布日期']设置Series的索引为'发布日期'列的值。"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 5,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"发布日期\n",
|
|||
|
"2022/5/20 0:00 3259.34\n",
|
|||
|
"2022/5/19 0:00 3234.45\n",
|
|||
|
"2022/5/18 0:00 3262.52\n",
|
|||
|
"2022/5/17 0:00 3267.97\n",
|
|||
|
"2022/5/16 0:00 3305.64\n",
|
|||
|
" ... \n",
|
|||
|
"2000/1/7 0:00 1106.19\n",
|
|||
|
"2000/1/6 0:00 1065.67\n",
|
|||
|
"2000/1/5 0:00 1028.87\n",
|
|||
|
"2000/1/4 0:00 1027.66\n",
|
|||
|
"1999/12/30 0:00 1000.00\n",
|
|||
|
"Length: 5406, dtype: float64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(series_close)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 6,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 720x432 with 3 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {
|
|||
|
"needs_background": "light"
|
|||
|
},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"def vmd_decompose(series=None, num_modes=3, alpha=2000, tau=0, K=3, DC=1, init=1, tol=1e-7):\n",
|
|||
|
" # 定义变分模态分解(VMD)函数,具有多个参数。\n",
|
|||
|
" # series:待分解的时间序列。\n",
|
|||
|
" # num_modes:分解的模态数量。\n",
|
|||
|
" # alpha, tau, K, DC, init, tol:VMD算法的参数。\n",
|
|||
|
"\n",
|
|||
|
" decom = VMD(series.values, alpha=alpha, tau=tau, K=K, DC=DC, init=init, tol=tol)\n",
|
|||
|
" # 使用VMD方法对输入的时间序列进行分解。\n",
|
|||
|
"\n",
|
|||
|
" vmd_result, *_ = decom\n",
|
|||
|
" # 从VMD返回的结果中获取分解后的模态。\n",
|
|||
|
"\n",
|
|||
|
" df_vmd = pd.DataFrame(vmd_result.T)\n",
|
|||
|
" # 将分解后的模态转换为DataFrame。\n",
|
|||
|
"\n",
|
|||
|
" df_vmd.columns = ['imf' + str(i) for i in range(len(df_vmd.columns))]\n",
|
|||
|
" # 为DataFrame的每一列命名,表示每个模态。\n",
|
|||
|
"\n",
|
|||
|
" df_vmd.to_csv('vmd_decompose.csv')\n",
|
|||
|
" # 将分解结果保存到CSV文件中。\n",
|
|||
|
"\n",
|
|||
|
" return df_vmd\n",
|
|||
|
" # 返回分解结果。\n",
|
|||
|
"\n",
|
|||
|
"# 调用函数并传入参数\n",
|
|||
|
"df_vmd_result = vmd_decompose(series=series_close, num_modes=3, alpha=2000, tau=0, K=3, DC=1, init=1, tol=1e-7)\n",
|
|||
|
"# 使用vmd_decompose函数对series_close进行VMD分解。\n",
|
|||
|
"\n",
|
|||
|
"# 可视化VMD分解结果\n",
|
|||
|
"fig, axs = plt.subplots(nrows=len(df_vmd_result.columns), figsize=(10, 6), sharex=True)\n",
|
|||
|
"# 创建一个绘图对象和多个子图对象。\n",
|
|||
|
"\n",
|
|||
|
"for i, col in enumerate(df_vmd_result.columns):\n",
|
|||
|
" axs[i].plot(df_vmd_result[col])\n",
|
|||
|
" axs[i].set_title(col)\n",
|
|||
|
" # 遍历每个模态并绘制在子图上。\n",
|
|||
|
"\n",
|
|||
|
"plt.suptitle('VMD Decomposition')\n",
|
|||
|
"# 设置图表的总标题。\n",
|
|||
|
"\n",
|
|||
|
"plt.xlabel('Time')\n",
|
|||
|
"# 设置x轴的标签。\n",
|
|||
|
"\n",
|
|||
|
"plt.show()\n",
|
|||
|
"# 显示图表。\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 7,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T07:57:47.266426Z",
|
|||
|
"start_time": "2023-05-06T07:57:47.245421Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" imf0 imf1 imf2\n",
|
|||
|
"0 3531.751521 -191.760606 -97.465751\n",
|
|||
|
"1 3531.473729 -191.684118 -97.693419\n",
|
|||
|
"2 3531.227653 -191.210280 -97.722481\n",
|
|||
|
"3 3530.660421 -190.706280 -97.838212\n",
|
|||
|
"4 3529.466722 -190.488685 -98.200846\n",
|
|||
|
"... ... ... ...\n",
|
|||
|
"5401 1400.221164 -285.714281 -40.909098\n",
|
|||
|
"5402 1398.327887 -289.990072 -43.032448\n",
|
|||
|
"5403 1396.429155 -293.765904 -45.520341\n",
|
|||
|
"5404 1395.016313 -296.474920 -47.544327\n",
|
|||
|
"5405 1394.130730 -298.027741 -48.828768\n",
|
|||
|
"\n",
|
|||
|
"[5406 rows x 3 columns]\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df_vmd_result)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 8,
|
|||
|
"metadata": {
|
|||
|
"ExecuteTime": {
|
|||
|
"end_time": "2023-05-06T08:20:56.821052Z",
|
|||
|
"start_time": "2023-05-06T08:20:52.877404Z"
|
|||
|
}
|
|||
|
},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"df_vmd_result.to_excel(\"VMD.xlsx\",index=False)#保存数据为VMD.xlsx"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": []
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": "Python 3",
|
|||
|
"language": "python",
|
|||
|
"name": "python3"
|
|||
|
},
|
|||
|
"language_info": {
|
|||
|
"codemirror_mode": {
|
|||
|
"name": "ipython",
|
|||
|
"version": 3
|
|||
|
},
|
|||
|
"file_extension": ".py",
|
|||
|
"mimetype": "text/x-python",
|
|||
|
"name": "python",
|
|||
|
"nbconvert_exporter": "python",
|
|||
|
"pygments_lexer": "ipython3",
|
|||
|
"version": "3.8.5"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 5
|
|||
|
}
|