diff --git a/aisenzhecode/液化石油气/日度价格预测_液化气最佳模型.pkl b/aisenzhecode/液化石油气/日度价格预测_液化气最佳模型.pkl index 6dae873..47f7dce 100644 Binary files a/aisenzhecode/液化石油气/日度价格预测_液化气最佳模型.pkl and b/aisenzhecode/液化石油气/日度价格预测_液化气最佳模型.pkl differ diff --git a/aisenzhecode/液化石油气/液化气价格预测ytj.ipynb b/aisenzhecode/液化石油气/液化气价格预测ytj.ipynb index ecf3db8..28e7bd2 100644 --- a/aisenzhecode/液化石油气/液化气价格预测ytj.ipynb +++ b/aisenzhecode/液化石油气/液化气价格预测ytj.ipynb @@ -2,9 +2,17 @@ "cells": [ { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From C:\\Users\\EDY\\AppData\\Roaming\\Python\\Python311\\site-packages\\keras\\src\\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.\n", + "\n" + ] + }, { "data": { "text/html": [ @@ -681,7 +689,7 @@ " # 更新当日数据\n", " start(date)\n", " # 训练模型\n", - " # optimize_Model()\n", + " optimize_Model()\n", " # 预测&上传预测结果\n", " upload_data_to_system(token_push,start_date)\n", "\n" @@ -735,14 +743,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "获取的token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlfZGV2IiwidGgiOiI4YTQ1NzdkYmQ5MTk2NzU3NThkNTc5OTlhMWU4OTFmZSIsImx0IjoiYXBpIiwiaXNzIjoiIiwidG0iOiJQQyIsImV4cCI6MTc0NjY0NTcwMCwianRpIjoiODRhODFmYmZjYTUxNGM4ZGIzOGFiZTVlM2U0ZWFhYmUifQ.Vu5gbh0s1TMd3NE6T89l0h67TQaf3r_TDHvO_lZsIcs\n" + "获取的token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlfZGV2IiwidGgiOiI4YTQ1NzdkYmQ5MTk2NzU3NThkNTc5OTlhMWU4OTFmZSIsImx0IjoiYXBpIiwiaXNzIjoiIiwidG0iOiJQQyIsImV4cCI6MTc0NzMwNzgyMCwianRpIjoiMzkyNmRlYjI3YWJkNDIyNjk2MDFmMGE4MTFjZWM4YzgifQ.N0sWMfEvZe0Jh7xPyBlLWnYqYLOLQdiRB3JASMSd0vw\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_2516\\268695125.py:602: DeprecationWarning:\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:602: DeprecationWarning:\n", "\n", "The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n", "\n" @@ -753,14 +761,14 @@ "output_type": "stream", "text": [ "当月数据更新完成\n", - "20250507\n" + "20250514\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_2516\\268695125.py:602: DeprecationWarning:\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:602: DeprecationWarning:\n", "\n", "The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n", "\n" @@ -772,31 +780,60 @@ "text": [ "当月数据更新完成\n", "获取到的数据项ID['YHQMXBB|C01100008|STRIKE_PRICE', 'C01100008|CORTED_VALUE', 'C01100008|AUCTION_MAX_PRICE', 'C01100008|AMOUNT', 'C01100008|YEDAY_AMOUNT', '100028046|LISTING_PRICE', 'ICE_CL0_LAST_YEDAY_PRICE', '91370200163576944B|C01100008|STRIKE_PRICE', '9137078672073757X8|C01100008|STRIKE_PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370305773165341A|C01100008|STRIKE_PRICE', '91370521164880008P|C01100008|STRIKE_PRICE', '91370321164425136B|C01100008|STRIKE_PRICE', 'SD|GC|ZDW|LIST_PRICE', '370500|ISOBUTANE|LIST_PRICE', 'SD|YT|SG|LIST_PRICE', '91110000710926094P|C01100008|SUPPLY_MERE', '91110000710932515R|C01100008|SUPPLY_MERE', '91370500674526498A|C01100008|SUPPLY_MERE', '91370321164425136B|C01100008|SUPPLY_MERE', 'C01100008|OTHER|SUPPLY_MERE', 'SD|WJH|DEMANDS', 'C01100008|SUY_DED_DAP', 'C01100008|EFFECTIVE_STOCK', '912102117169477344|C01100008|STRIKE_PRICE', '91110304102767480H|C01100008|STRIKE_PRICE', '91130193670310403L|C01100008|STRIKE_PRICE', 'HD|LPG|IMPORT_PRICE', 'SD|WJH|SALES_PRICE']\n", - "获取的token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlfZGV2IiwidGgiOiI4YTQ1NzdkYmQ5MTk2NzU3NThkNTc5OTlhMWU4OTFmZSIsImx0IjoiYXBpIiwiaXNzIjoiIiwidG0iOiJQQyIsImV4cCI6MTc0NjY0NTcwOCwianRpIjoiNDFjODI0ZjQ0MDIzNDZlZmI5NjY5NTcwZGE3MmZiYmYifQ.OUIHg0JlPstctzFKJ__8Qqo7oZuxedssnRJlUYXujtc\n", - "获取20250507数据\n", + "获取的token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlfZGV2IiwidGgiOiI4YTQ1NzdkYmQ5MTk2NzU3NThkNTc5OTlhMWU4OTFmZSIsImx0IjoiYXBpIiwiaXNzIjoiIiwidG0iOiJQQyIsImV4cCI6MTc0NzMwNzgyMywianRpIjoiZGZhZjM2ZjcyNWRhNDJmMThjYThmZWE0Y2VkNjQ1MjcifQ.IRHbVrERfphVjgcVRZvnpUN6GBMIH4uCQ9SIcS5U3fA\n", + "获取20250514数据\n", "数据项查询参数search_data:\n", - "{'data': {'date': '20250507', 'dataItemNoList': ['YHQMXBB|C01100008|STRIKE_PRICE', 'C01100008|CORTED_VALUE', 'C01100008|AUCTION_MAX_PRICE', 'C01100008|AMOUNT', 'C01100008|YEDAY_AMOUNT', '100028046|LISTING_PRICE', 'ICE_CL0_LAST_YEDAY_PRICE', '91370200163576944B|C01100008|STRIKE_PRICE', '9137078672073757X8|C01100008|STRIKE_PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370305773165341A|C01100008|STRIKE_PRICE', '91370521164880008P|C01100008|STRIKE_PRICE', '91370321164425136B|C01100008|STRIKE_PRICE', 'SD|GC|ZDW|LIST_PRICE', '370500|ISOBUTANE|LIST_PRICE', 'SD|YT|SG|LIST_PRICE', '91110000710926094P|C01100008|SUPPLY_MERE', '91110000710932515R|C01100008|SUPPLY_MERE', '91370500674526498A|C01100008|SUPPLY_MERE', '91370321164425136B|C01100008|SUPPLY_MERE', 'C01100008|OTHER|SUPPLY_MERE', 'SD|WJH|DEMANDS', 'C01100008|SUY_DED_DAP', 'C01100008|EFFECTIVE_STOCK', '912102117169477344|C01100008|STRIKE_PRICE', '91110304102767480H|C01100008|STRIKE_PRICE', '91130193670310403L|C01100008|STRIKE_PRICE', 'HD|LPG|IMPORT_PRICE', 'SD|WJH|SALES_PRICE']}, 'funcModule': '数据项', 'funcOperation': '查询'}\n", + "{'data': {'date': '20250514', 'dataItemNoList': ['YHQMXBB|C01100008|STRIKE_PRICE', 'C01100008|CORTED_VALUE', 'C01100008|AUCTION_MAX_PRICE', 'C01100008|AMOUNT', 'C01100008|YEDAY_AMOUNT', '100028046|LISTING_PRICE', 'ICE_CL0_LAST_YEDAY_PRICE', '91370200163576944B|C01100008|STRIKE_PRICE', '9137078672073757X8|C01100008|STRIKE_PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370305773165341A|C01100008|STRIKE_PRICE', '91370521164880008P|C01100008|STRIKE_PRICE', '91370321164425136B|C01100008|STRIKE_PRICE', 'SD|GC|ZDW|LIST_PRICE', '370500|ISOBUTANE|LIST_PRICE', 'SD|YT|SG|LIST_PRICE', '91110000710926094P|C01100008|SUPPLY_MERE', '91110000710932515R|C01100008|SUPPLY_MERE', '91370500674526498A|C01100008|SUPPLY_MERE', '91370321164425136B|C01100008|SUPPLY_MERE', 'C01100008|OTHER|SUPPLY_MERE', 'SD|WJH|DEMANDS', 'C01100008|SUY_DED_DAP', 'C01100008|EFFECTIVE_STOCK', '912102117169477344|C01100008|STRIKE_PRICE', '91110304102767480H|C01100008|STRIKE_PRICE', '91130193670310403L|C01100008|STRIKE_PRICE', 'HD|LPG|IMPORT_PRICE', 'SD|WJH|SALES_PRICE']}, 'funcModule': '数据项', 'funcOperation': '查询'}\n", "数据项查询结果search_res:\n", - "{\"confirmFlg\":false,\"data\":[{\"dataDate\":\"20250507\",\"dataItemNo\":\"91110000710926094P|C01100008|SUPPLY_MERE\",\"dataValue\":1300.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"91110000710932515R|C01100008|SUPPLY_MERE\"},{\"dataDate\":\"20250507\",\"dataItemNo\":\"91370321164425136B|C01100008|STRIKE_PRICE\",\"dataValue\":4750.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"91370321164425136B|C01100008|SUPPLY_MERE\",\"dataValue\":300.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"91370500674526498A|C01100008|SUPPLY_MERE\",\"dataValue\":175.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"91370521164880008P|C01100008|STRIKE_PRICE\",\"dataValue\":4805.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"C01100008|AUCTION_MAX_PRICE\",\"dataValue\":4770.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"C01100008|CORTED_VALUE\",\"dataValue\":4770.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"C01100008|OTHER|SUPPLY_MERE\",\"dataValue\":5000.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"C01100008|SUY_DED_DAP\",\"dataValue\":-50.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"ICE_CL0_LAST_YEDAY_PRICE\",\"dataValue\":62.04000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"SD|WJH|DEMANDS\",\"dataValue\":8500.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"SD|WJH|SALES_PRICE\",\"dataValue\":7830.00000000},{\"dataDate\":\"20250507\",\"dataItemNo\":\"YHQMXBB|C01100008|STRIKE_PRICE\",\"dataValue\":4770.00000000}],\"status\":true}\n", - "数据项查询结果: [{'dataDate': '20250507', 'dataItemNo': '91110000710926094P|C01100008|SUPPLY_MERE', 'dataValue': 1300.0}, {'dataDate': '20250507', 'dataItemNo': '91110000710932515R|C01100008|SUPPLY_MERE'}, {'dataDate': '20250507', 'dataItemNo': '91370321164425136B|C01100008|STRIKE_PRICE', 'dataValue': 4750.0}, {'dataDate': '20250507', 'dataItemNo': '91370321164425136B|C01100008|SUPPLY_MERE', 'dataValue': 300.0}, {'dataDate': '20250507', 'dataItemNo': '91370500674526498A|C01100008|SUPPLY_MERE', 'dataValue': 175.0}, {'dataDate': '20250507', 'dataItemNo': '91370521164880008P|C01100008|STRIKE_PRICE', 'dataValue': 4805.0}, {'dataDate': '20250507', 'dataItemNo': 'C01100008|AUCTION_MAX_PRICE', 'dataValue': 4770.0}, {'dataDate': '20250507', 'dataItemNo': 'C01100008|CORTED_VALUE', 'dataValue': 4770.0}, {'dataDate': '20250507', 'dataItemNo': 'C01100008|OTHER|SUPPLY_MERE', 'dataValue': 5000.0}, {'dataDate': '20250507', 'dataItemNo': 'C01100008|SUY_DED_DAP', 'dataValue': -50.0}, {'dataDate': '20250507', 'dataItemNo': 'ICE_CL0_LAST_YEDAY_PRICE', 'dataValue': 62.04}, {'dataDate': '20250507', 'dataItemNo': 'SD|WJH|DEMANDS', 'dataValue': 8500.0}, {'dataDate': '20250507', 'dataItemNo': 'SD|WJH|SALES_PRICE', 'dataValue': 7830.0}, {'dataDate': '20250507', 'dataItemNo': 'YHQMXBB|C01100008|STRIKE_PRICE', 'dataValue': 4770.0}]\n", - "{'dataDate': '20250507', 'dataItemNo': '91110000710932515R|C01100008|SUPPLY_MERE'}\n", - "添加的行: ['2025-05-07', 4770.0, 4770.0, 4770.0, '', '', '', 62.04, '', '', '', '', 4805.0, 4750.0, '', '', '', 1300.0, '', 175.0, 300.0, 5000.0, 8500.0, -50.0, '', '', '', '', '', 7830.0]\n", - "更新 2025-05-07 数据\n" + "{\"confirmFlg\":false,\"data\":[{\"dataDate\":\"20250514\",\"dataItemNo\":\"100028046|LISTING_PRICE\",\"dataValue\":7613.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91110000710926094P|C01100008|SUPPLY_MERE\",\"dataValue\":1300.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91110000710932515R|C01100008|SUPPLY_MERE\"},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91370321164425136B|C01100008|STRIKE_PRICE\",\"dataValue\":4650.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91370321164425136B|C01100008|SUPPLY_MERE\",\"dataValue\":300.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91370500674526498A|C01100008|SUPPLY_MERE\",\"dataValue\":175.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"91370521164880008P|C01100008|STRIKE_PRICE\",\"dataValue\":4705.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"C01100008|AUCTION_MAX_PRICE\",\"dataValue\":4650.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"C01100008|CORTED_VALUE\",\"dataValue\":4650.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"C01100008|OTHER|SUPPLY_MERE\",\"dataValue\":5000.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"C01100008|SUY_DED_DAP\",\"dataValue\":-50.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"ICE_CL0_LAST_YEDAY_PRICE\",\"dataValue\":66.60000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"SD|WJH|DEMANDS\",\"dataValue\":8500.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"SD|WJH|SALES_PRICE\",\"dataValue\":7900.00000000},{\"dataDate\":\"20250514\",\"dataItemNo\":\"YHQMXBB|C01100008|STRIKE_PRICE\",\"dataValue\":4650.00000000}],\"status\":true}\n", + "数据项查询结果: [{'dataDate': '20250514', 'dataItemNo': '100028046|LISTING_PRICE', 'dataValue': 7613.0}, {'dataDate': '20250514', 'dataItemNo': '91110000710926094P|C01100008|SUPPLY_MERE', 'dataValue': 1300.0}, {'dataDate': '20250514', 'dataItemNo': '91110000710932515R|C01100008|SUPPLY_MERE'}, {'dataDate': '20250514', 'dataItemNo': '91370321164425136B|C01100008|STRIKE_PRICE', 'dataValue': 4650.0}, {'dataDate': '20250514', 'dataItemNo': '91370321164425136B|C01100008|SUPPLY_MERE', 'dataValue': 300.0}, {'dataDate': '20250514', 'dataItemNo': '91370500674526498A|C01100008|SUPPLY_MERE', 'dataValue': 175.0}, {'dataDate': '20250514', 'dataItemNo': '91370521164880008P|C01100008|STRIKE_PRICE', 'dataValue': 4705.0}, {'dataDate': '20250514', 'dataItemNo': 'C01100008|AUCTION_MAX_PRICE', 'dataValue': 4650.0}, {'dataDate': '20250514', 'dataItemNo': 'C01100008|CORTED_VALUE', 'dataValue': 4650.0}, {'dataDate': '20250514', 'dataItemNo': 'C01100008|OTHER|SUPPLY_MERE', 'dataValue': 5000.0}, {'dataDate': '20250514', 'dataItemNo': 'C01100008|SUY_DED_DAP', 'dataValue': -50.0}, {'dataDate': '20250514', 'dataItemNo': 'ICE_CL0_LAST_YEDAY_PRICE', 'dataValue': 66.6}, {'dataDate': '20250514', 'dataItemNo': 'SD|WJH|DEMANDS', 'dataValue': 8500.0}, {'dataDate': '20250514', 'dataItemNo': 'SD|WJH|SALES_PRICE', 'dataValue': 7900.0}, {'dataDate': '20250514', 'dataItemNo': 'YHQMXBB|C01100008|STRIKE_PRICE', 'dataValue': 4650.0}]\n", + "{'dataDate': '20250514', 'dataItemNo': '91110000710932515R|C01100008|SUPPLY_MERE'}\n", + "添加的行: ['2025-05-14', 4650.0, 4650.0, 4650.0, '', '', 7613.0, 66.6, '', '', '', '', 4705.0, 4650.0, '', '', '', 1300.0, '', 175.0, 300.0, 5000.0, 8500.0, -50.0, '', '', '', '', '', 7900.0]\n", + "更新 2025-05-14 数据\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_2516\\268695125.py:186: UserWarning:\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:238: UserWarning:\n", "\n", "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", "\n", - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_2516\\268695125.py:188: UserWarning:\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:240: UserWarning:\n", + "\n", + "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using matplotlib backend: \n", + "%pylab is deprecated, use %matplotlib inline and import the required libraries.\n", + "Populating the interactive namespace from numpy and matplotlib\n", + "Fitting 3 folds for each of 180 candidates, totalling 540 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\ProgramData\\anaconda3\\Lib\\site-packages\\IPython\\core\\magics\\pylab.py:162: UserWarning:\n", + "\n", + "pylab import has clobbered these variables: ['random', 'plot', '__version__', 'datetime']\n", + "`%matplotlib` prevents importing * from pylab and numpy\n", + "\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:186: UserWarning:\n", "\n", "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", "\n", - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_2516\\268695125.py:220: FutureWarning:\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:188: UserWarning:\n", + "\n", + "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", + "\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_25852\\3372978512.py:220: FutureWarning:\n", "\n", "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", "\n" @@ -807,16 +844,15 @@ "output_type": "stream", "text": [ "Date\n", - "2025-05-07 4769.817871\n", + "2025-05-14 4646.130371\n", "Name: 日度预测价格, dtype: float32\n", - "{\"confirmFlg\":false,\"status\":true}\n", - "预测值: 4769.82\n" + "预测值: 4646.13\n" ] } ], "source": [ - "# start_date = datetime(2025, 5, 7)\n", - "# end_date = datetime(2025, 5, 8)\n", + "# start_date = datetime(2025, 5, 14)\n", + "# end_date = datetime(2025, 5, 15)\n", "# token = get_head_auth()\n", "\n", "# while start_date < end_date:\n", diff --git a/aisenzhecode/液化石油气/液化气数据.xlsx b/aisenzhecode/液化石油气/液化气数据.xlsx index 5fa9051..881f407 100644 Binary files a/aisenzhecode/液化石油气/液化气数据.xlsx and b/aisenzhecode/液化石油气/液化气数据.xlsx differ diff --git a/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl b/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl index 85cb275..da8f6d4 100644 Binary files a/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl and b/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl differ diff --git a/aisenzhecode/石油苯/纯苯价格预测-自定义日期ytj.ipynb b/aisenzhecode/石油苯/纯苯价格预测-自定义日期ytj.ipynb index d893f36..0550db1 100644 --- a/aisenzhecode/石油苯/纯苯价格预测-自定义日期ytj.ipynb +++ b/aisenzhecode/石油苯/纯苯价格预测-自定义日期ytj.ipynb @@ -2,9 +2,17 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From C:\\Users\\EDY\\AppData\\Roaming\\Python\\Python311\\site-packages\\keras\\src\\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.\n", + "\n" + ] + }, { "data": { "text/html": [ @@ -28,112 +36,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "运行中ing\n", - "执行定时任务\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_22664\\2912906777.py:771: DeprecationWarning:\n", - "\n", - "The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "获取到的数据项ID['数据项编码', 'C01100047|STRIKE_PRICE', 'Brentspj', '913716251671540959|EXCHANGE_RATE', 'C01100010|LIST_PRICE01', '250326561|STRIKE_PRICE', 'C01100047|LIST_PRICE', 'C01100047|LIST_PRICE-1', 'C01100047|LIST_PRICE-01', 'OIL_CHEM|guonei|6097|PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370783724809024G|BEN|PRICE', '91370500737223620X|BEN|PRICE', '91370503706169019D|BEN|PRICE', '91370503164840647R|BEN|PRICE', 'C01100047|TURNOVER', '913705221649223519|C01100047|EXW', 'C01100047|CAPACITY']\n", - "获取到的数据项ID['C01100047|STRIKE_PRICE', 'Brentspj', '913716251671540959|EXCHANGE_RATE', 'C01100010|LIST_PRICE01', '250326561|STRIKE_PRICE', 'C01100047|LIST_PRICE', 'C01100047|LIST_PRICE-1', 'C01100047|LIST_PRICE-01', 'OIL_CHEM|guonei|6097|PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370783724809024G|BEN|PRICE', '91370500737223620X|BEN|PRICE', '91370503706169019D|BEN|PRICE', '91370503164840647R|BEN|PRICE', 'C01100047|TURNOVER', '913705221649223519|C01100047|EXW', 'C01100047|CAPACITY']\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_22664\\2912906777.py:771: DeprecationWarning:\n", - "\n", - "The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n", - "\n", - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_22664\\2912906777.py:320: UserWarning:\n", - "\n", - "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", - "\n", - "d:\\ProgramData\\anaconda3\\Lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:631: ConvergenceWarning:\n", - "\n", - "Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.681e+05, tolerance: 4.960e+04\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using matplotlib backend: QtAgg\n", - "%pylab is deprecated, use %matplotlib inline and import the required libraries.\n", - "Populating the interactive namespace from numpy and matplotlib\n", - "Fitting 3 folds for each of 180 candidates, totalling 540 fits\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ProgramData\\anaconda3\\Lib\\site-packages\\IPython\\core\\magics\\pylab.py:162: UserWarning:\n", - "\n", - "pylab import has clobbered these variables: ['__version__', 'datetime', 'plot', 'random']\n", - "`%matplotlib` prevents importing * from pylab and numpy\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Date\n", - "2025-05-07 5427.172363\n", - "Name: 日度预测价格, dtype: float32\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_22664\\2912906777.py:273: UserWarning:\n", - "\n", - "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", - "\n", - "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_22664\\2912906777.py:303: FutureWarning:\n", - "\n", - "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'funcModule': '数据表信息列表', 'funcOperation': '新增', 'data': [{'dataItemNo': 'C01100047|FORECAST_PRICE', 'dataDate': '20250507', 'dataStatus': 'add', 'dataValue': 5427.17}]}\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[3], line 834\u001b[0m\n\u001b[0;32m 832\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m更新数据\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 833\u001b[0m start_1()\n\u001b[1;32m--> 834\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m1\u001b[39m)\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] } ], "source": [ @@ -380,9 +282,9 @@ " ]\n", " }\n", " print(data)\n", - " headers = {\"Authorization\": token_push}\n", - " res = requests.post(url=upload_url, headers=headers, json=data, timeout=(3, 5))\n", - " print(res.text)\n", + " # headers = {\"Authorization\": token_push}\n", + " # res = requests.post(url=upload_url, headers=headers, json=data, timeout=(3, 5))\n", + " # print(res.text)\n", "\n", " \n", " \n", @@ -928,30 +830,27 @@ " save_queryDataListItemNos_xls(data_df,dataItemNoList)\n", "\n", "\n", - "if __name__ == \"__main__\":\n", - " print('运行中ing')\n", + "# if __name__ == \"__main__\":\n", + "# print('运行中ing')\n", "\n", - " # 每天定时12点运行\n", - " while True:\n", - " # 获取当前时间\n", - " current_time = time.strftime(\"%H:%M:%S\", time.localtime())\n", - " current_time_1 = time.strftime(\"%H:%M:%S\", time.localtime())\n", + "# # 每天定时12点运行\n", + "# while True:\n", + "# # 获取当前时间\n", + "# current_time = time.strftime(\"%H:%M:%S\", time.localtime())\n", + "# current_time_1 = time.strftime(\"%H:%M:%S\", time.localtime())\n", " \n", "\n", "\n", - " # 判断当前时间是否为执行任务的时间点\n", - " if current_time == \"09:15:00\":\n", - " print(\"执行定时任务\")\n", - " queryDataListItemNos()\n", - " start()\n", - "\n", - " # 休眠1秒钟,避免过多占用CPU资源\n", - " time.sleep(1)\n", + "# # 判断当前时间是否为执行任务的时间点\n", + "# if current_time == \"09:15:00\":\n", + "# print(\"执行定时任务\")\n", + "# queryDataListItemNos()\n", + "# start()\n", " \n", - " elif current_time_1 == \"20:00:00\":\n", - " print(\"更新数据\")\n", - " start_1()\n", - " time.sleep(1)\n", + "# # elif current_time_1 == \"20:00:00\":\n", + "# # print(\"更新数据\")\n", + "# # start_1()\n", + "# time.sleep(1)\n", "\n", "\n", "# # 检测数据准确性, 需要检测放开\n", @@ -961,23 +860,90 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20250514\n", + "获取到的数据项ID['数据项编码', 'C01100047|STRIKE_PRICE', 'Brentspj', '913716251671540959|EXCHANGE_RATE', 'C01100010|LIST_PRICE01', '250326561|STRIKE_PRICE', 'C01100047|LIST_PRICE', 'C01100047|LIST_PRICE-1', 'C01100047|LIST_PRICE-01', 'OIL_CHEM|guonei|6097|PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370783724809024G|BEN|PRICE', '91370500737223620X|BEN|PRICE', '91370503706169019D|BEN|PRICE', '91370503164840647R|BEN|PRICE', 'C01100047|TURNOVER', '913705221649223519|C01100047|EXW', 'C01100047|CAPACITY']\n", + "获取到的数据项ID['C01100047|STRIKE_PRICE', 'Brentspj', '913716251671540959|EXCHANGE_RATE', 'C01100010|LIST_PRICE01', '250326561|STRIKE_PRICE', 'C01100047|LIST_PRICE', 'C01100047|LIST_PRICE-1', 'C01100047|LIST_PRICE-01', 'OIL_CHEM|guonei|6097|PRICE', '91370500674526498A|C01100008|STRIKE_PRICE', '91370783724809024G|BEN|PRICE', '91370500737223620X|BEN|PRICE', '91370503706169019D|BEN|PRICE', '91370503164840647R|BEN|PRICE', 'C01100047|TURNOVER', '913705221649223519|C01100047|EXW', 'C01100047|CAPACITY']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_13740\\2721280480.py:753: DeprecationWarning:\n", + "\n", + "The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n", + "\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_13740\\2721280480.py:302: UserWarning:\n", + "\n", + "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", + "\n", + "d:\\ProgramData\\anaconda3\\Lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:631: ConvergenceWarning:\n", + "\n", + "Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.765e+05, tolerance: 5.324e+04\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using matplotlib backend: \n", + "%pylab is deprecated, use %matplotlib inline and import the required libraries.\n", + "Populating the interactive namespace from numpy and matplotlib\n", + "Fitting 3 folds for each of 180 candidates, totalling 540 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\ProgramData\\anaconda3\\Lib\\site-packages\\IPython\\core\\magics\\pylab.py:162: UserWarning:\n", + "\n", + "pylab import has clobbered these variables: ['random', 'datetime', 'plot', '__version__']\n", + "`%matplotlib` prevents importing * from pylab and numpy\n", + "\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_13740\\2721280480.py:255: UserWarning:\n", + "\n", + "The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", + "\n", + "C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_13740\\2721280480.py:285: FutureWarning:\n", + "\n", + "Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date\n", + "2025-05-15 6119.335449\n", + "Name: 日度预测价格, dtype: float32\n", + "{'funcModule': '数据表信息列表', 'funcOperation': '新增', 'data': [{'dataItemNo': 'C01100047|FORECAST_PRICE', 'dataDate': datetime.datetime(2025, 5, 14, 0, 0), 'dataStatus': 'add', 'dataValue': 6119.34}]}\n" + ] + } + ], "source": [ - "# # # 自定义日期执行预测\n", + "# # 自定义日期执行预测\n", "\n", - "# start_date = datetime(2025, 5, 1)\n", - "# end_date = datetime(2025, 5, 7)\n", + "start_date = datetime(2025, 5, 14)\n", + "end_date = datetime(2025, 5, 15)\n", "\n", - "# token = get_head_auth()\n", - "# token_push = get_head_push_auth()\n", - "# while start_date < end_date:\n", - "# print(start_date.strftime('%Y%m%d'))\n", - "# start(start_date,token,token_push)\n", - "# time.sleep(2)\n", - "# # start_1(start_date)\n", - "# start_date += timedelta(days=1)" + "token = get_head_auth()\n", + "token_push = get_head_push_auth()\n", + "while start_date < end_date:\n", + " print(start_date.strftime('%Y%m%d'))\n", + " start(start_date,token,token_push)\n", + " time.sleep(2)\n", + " # start_1(start_date)\n", + " start_date += timedelta(days=1)" ] }, { diff --git a/aisenzhecode/石油苯/纯苯数据项.xls b/aisenzhecode/石油苯/纯苯数据项.xls index bd53b41..efbafd3 100644 Binary files a/aisenzhecode/石油苯/纯苯数据项.xls and b/aisenzhecode/石油苯/纯苯数据项.xls differ diff --git a/config_jingbo.py b/config_jingbo.py index e5c094a..96e71f0 100644 --- a/config_jingbo.py +++ b/config_jingbo.py @@ -40,7 +40,10 @@ edbnamelist = [ # eta自有数据指标编码 -modelsindex = { +bdwdname = [ + '次日' +] +modelsindex = [{ 'NHITS': 'SELF0000001', 'Informer': 'SELF0000057', 'LSTM': 'SELF0000058', @@ -62,12 +65,12 @@ modelsindex = { 'MLPMultivariate': 'SELF0000074', 'TiDE': 'SELF0000075', 'DeepNPTS': 'SELF0000076' -} +}] # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist 数据 data = { "IndexCode": "", - "IndexName": "价格预测模型", + "IndexName": "价格预测xx模型", "Unit": "无", "Frequency": "日度", "SourceName": f"价格预测", @@ -97,7 +100,12 @@ ClassifyId = 1214 # query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" # # 上传数据项值 # push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" +# 上传停更数据到市场信息平台 +# push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" +# 获取预警数据中取消订阅指标ID +# get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList" +# # login_data = { # "data": { # "account": "api_dev", @@ -170,6 +178,32 @@ ClassifyId = 1214 # } # ] # } + + +# push_waring_data_value_list_data = { +# "data": { +# "crudeOilWarningDtoList": [ +# { +# "lastUpdateDate": "20240501", +# "updateSuspensionCycle": 1, +# "dataSource": "8", +# "frequency": "1", +# "indicatorName": "美元指数", +# "indicatorId": "myzs001", +# "warningDate": "2024-05-13" +# } +# ], +# "dataSource": "8" +# }, +# "funcModule": "商品数据同步", +# "funcOperation": "同步" +# } + + +# get_waring_data_value_list_data = { +# "data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"} + + # # 八大维度数据项编码 # bdwd_items = { # 'ciri': '原油大数据预测|FORECAST|PRICE|T', @@ -329,8 +363,8 @@ table_name = 'v_tbl_crude_oil_warning' # 开关 -is_train = True # 是否训练 -is_debug = False # 是否调试 +is_train = False # 是否训练 +is_debug = True # 是否调试 is_eta = False # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 diff --git a/config_jingbo_yuedu.py b/config_jingbo_yuedu.py index d41ec10..03cee31 100644 --- a/config_jingbo_yuedu.py +++ b/config_jingbo_yuedu.py @@ -39,35 +39,116 @@ edbnamelist = [ ] -# eta自有数据指标编码 次月 -modelsindex = { - 'NHITS': 'SELF0000143', - 'Informer': 'SELF0000144', - 'LSTM': 'SELF0000145', - 'iTransformer': 'SELF0000146', - 'TSMixer': 'SELF0000147', - 'TSMixerx': 'SELF0000148', - 'PatchTST': 'SELF0000149', - 'RNN': 'SELF0000150', - 'GRU': 'SELF0000151', - 'TCN': 'SELF0000152', - 'BiTCN': 'SELF0000153', - 'DilatedRNN': 'SELF0000154', - 'MLP': 'SELF0000155', - 'DLinear': 'SELF0000156', - 'NLinear': 'SELF0000157', - 'TFT': 'SELF0000158', - 'FEDformer': 'SELF0000159', - 'StemGNN': 'SELF0000160', - 'MLPMultivariate': 'SELF0000161', - 'TiDE': 'SELF0000162', - 'DeepNPTS': 'SELF0000163', -} +# eta自有数据指标编码 次月,次二月,次三月,次四月 +bdwdname = [ + '次月', + '次二月', + '次三月', + '次四月', +] +modelsindex = [ + { + "NHITS": "SELF0000143", + "Informer": "SELF0000144", + "LSTM": "SELF0000145", + "iTransformer": "SELF0000146", + "TSMixer": "SELF0000147", + "TSMixerx": "SELF0000148", + "PatchTST": "SELF0000149", + "RNN": "SELF0000150", + "GRU": "SELF0000151", + "TCN": "SELF0000152", + "BiTCN": "SELF0000153", + "DilatedRNN": "SELF0000154", + "MLP": "SELF0000155", + "DLinear": "SELF0000156", + "NLinear": "SELF0000157", + "TFT": "SELF0000158", + "FEDformer": "SELF0000159", + "StemGNN": "SELF0000160", + "MLPMultivariate": "SELF0000161", + "TiDE": "SELF0000162", + "DeepNPTS": "SELF0000163", + "NBEATS": "SELF0000164" + }, + { + "NHITS": "SELF0000165", + "Informer": "SELF0000166", + "LSTM": "SELF0000167", + "iTransformer": "SELF0000168", + "TSMixer": "SELF0000169", + "TSMixerx": "SELF0000170", + "PatchTST": "SELF0000171", + "RNN": "SELF0000172", + "GRU": "SELF0000173", + "TCN": "SELF0000174", + "BiTCN": "SELF0000175", + "DilatedRNN": "SELF0000176", + "MLP": "SELF0000177", + "DLinear": "SELF0000178", + "NLinear": "SELF0000179", + "TFT": "SELF0000180", + "FEDformer": "SELF0000181", + "StemGNN": "SELF0000182", + "MLPMultivariate": "SELF0000183", + "TiDE": "SELF0000184", + "DeepNPTS": "SELF0000185", + "NBEATS": "SELF0000186" + }, + { + "NHITS": "SELF0000187", + "Informer": "SELF0000188", + "LSTM": "SELF0000189", + "iTransformer": "SELF0000190", + "TSMixer": "SELF0000191", + "TSMixerx": "SELF0000192", + "PatchTST": "SELF0000193", + "RNN": "SELF0000194", + "GRU": "SELF0000195", + "TCN": "SELF0000196", + "BiTCN": "SELF0000197", + "DilatedRNN": "SELF0000198", + "MLP": "SELF0000199", + "DLinear": "SELF0000200", + "NLinear": "SELF0000201", + "TFT": "SELF0000202", + "FEDformer": "SELF0000203", + "StemGNN": "SELF0000204", + "MLPMultivariate": "SELF0000205", + "TiDE": "SELF0000206", + "DeepNPTS": "SELF0000207", + "NBEATS": "SELF0000208" + }, + { + "NHITS": "SELF0000209", + "Informer": "SELF0000210", + "LSTM": "SELF0000211", + "iTransformer": "SELF0000212", + "TSMixer": "SELF0000213", + "TSMixerx": "SELF0000214", + "PatchTST": "SELF0000215", + "RNN": "SELF0000216", + "GRU": "SELF0000217", + "TCN": "SELF0000218", + "BiTCN": "SELF0000219", + "DilatedRNN": "SELF0000220", + "MLP": "SELF0000221", + "DLinear": "SELF0000222", + "NLinear": "SELF0000223", + "TFT": "SELF0000224", + "FEDformer": "SELF0000225", + "StemGNN": "SELF0000226", + "MLPMultivariate": "SELF0000227", + "TiDE": "SELF0000228", + "DeepNPTS": "SELF0000229", + "NBEATS": "SELF0000230" + } +] # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist 数据 data = { "IndexCode": "", - "IndexName": "价格预测xx模型-次月", + "IndexName": "价格预测xx模型-yy", "Unit": "无", "Frequency": "日度", "SourceName": f"价格预测", @@ -297,9 +378,9 @@ table_name = 'v_tbl_crude_oil_warning' # 开关 -is_train = True # 是否训练 -is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 +is_train = False # 是否训练 +is_debug = True # 是否调试 +is_eta = False # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 diff --git a/config_jingbo_zhoudu.py b/config_jingbo_zhoudu.py index d69faf4..5db96dc 100644 --- a/config_jingbo_zhoudu.py +++ b/config_jingbo_zhoudu.py @@ -39,35 +39,64 @@ edbnamelist = [ ] -# eta自有数据指标编码 次周 -modelsindex = { - 'NHITS': 'SELF0000099', - 'Informer': 'SELF0000100', - 'LSTM': 'SELF0000101', - 'iTransformer': 'SELF0000102', - 'TSMixer': 'SELF0000103', - 'TSMixerx': 'SELF0000104', - 'PatchTST': 'SELF0000105', - 'RNN': 'SELF0000106', - 'GRU': 'SELF0000107', - 'TCN': 'SELF0000108', - 'BiTCN': 'SELF0000109', - 'DilatedRNN': 'SELF0000110', - 'MLP': 'SELF0000111', - 'DLinear': 'SELF0000112', - 'NLinear': 'SELF0000113', - 'TFT': 'SELF0000114', - 'FEDformer': 'SELF0000115', - 'StemGNN': 'SELF0000116', - 'MLPMultivariate': 'SELF0000117', - 'TiDE': 'SELF0000118', - 'DeepNPTS': 'SELF0000119', -} +# eta自有数据指标编码 次周,隔周 +bdwdname = [ + '次周', + '隔周', +] +modelsindex = [{ + "NHITS": "SELF0000099", + "Informer": "SELF0000100", + "LSTM": "SELF0000101", + "iTransformer": "SELF0000102", + "TSMixer": "SELF0000103", + "TSMixerx": "SELF0000104", + "PatchTST": "SELF0000105", + "RNN": "SELF0000106", + "GRU": "SELF0000107", + "TCN": "SELF0000108", + "BiTCN": "SELF0000109", + "DilatedRNN": "SELF0000110", + "MLP": "SELF0000111", + "DLinear": "SELF0000112", + "NLinear": "SELF0000113", + "TFT": "SELF0000114", + "FEDformer": "SELF0000115", + "StemGNN": "SELF0000116", + "MLPMultivariate": "SELF0000117", + "TiDE": "SELF0000118", + "DeepNPTS": "SELF0000119", + "NBEATS": "SELF0000120" +}, + { + "NHITS": "SELF0000121", + "Informer": "SELF0000122", + "LSTM": "SELF0000123", + "iTransformer": "SELF0000124", + "TSMixer": "SELF0000125", + "TSMixerx": "SELF0000126", + "PatchTST": "SELF0000127", + "RNN": "SELF0000128", + "GRU": "SELF0000129", + "TCN": "SELF0000130", + "BiTCN": "SELF0000131", + "DilatedRNN": "SELF0000132", + "MLP": "SELF0000133", + "DLinear": "SELF0000134", + "NLinear": "SELF0000135", + "TFT": "SELF0000136", + "FEDformer": "SELF0000137", + "StemGNN": "SELF0000138", + "MLPMultivariate": "SELF0000139", + "TiDE": "SELF0000140", + "DeepNPTS": "SELF0000141", + "NBEATS": "SELF0000142" +}] # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist 数据 data = { "IndexCode": "", - "IndexName": "价格预测模型", + "IndexName": "价格预测xx模型-yy", "Unit": "无", "Frequency": "日度", "SourceName": f"价格预测", @@ -297,14 +326,14 @@ table_name = 'v_tbl_crude_oil_warning' # 开关 is_train = True # 是否训练 -is_debug = False # 是否调试 -is_eta = False # 是否使用eta接口 +is_debug = True # 是否调试 +is_eta = True # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -is_update_eta = False # 预测结果上传到eta +is_update_eta = True # 预测结果上传到eta is_update_report = True # 是否上传报告 is_update_warning_data = False # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 diff --git a/eta数据调试.py b/eta数据调试.py index 5caee95..f7ab4c1 100644 --- a/eta数据调试.py +++ b/eta数据调试.py @@ -3,17 +3,6 @@ from config_jingbo import * from lib.dataread import * -signature = BinanceAPI(APPID, SECRET) -etadata = EtaReader(signature=signature, - classifylisturl=classifylisturl, - classifyidlisturl=classifyidlisturl, - edbcodedataurl=edbcodedataurl, - edbcodelist=edbcodelist, - edbdatapushurl=edbdatapushurl, - edbdeleteurl=edbdeleteurl, - edbbusinessurl=edbbusinessurl - ) - logger.info('从eta获取数据...') signature = BinanceAPI(APPID, SECRET) etadata = EtaReader(signature=signature, diff --git a/lib/dataread.py b/lib/dataread.py index 5f83674..469f81d 100644 --- a/lib/dataread.py +++ b/lib/dataread.py @@ -49,6 +49,8 @@ global_config = { 'is_fivemodels': None, 'weight_dict': None, 'baicangidnamedict': None, # 百川id名称映射 + 'modelsindex': None, # 模型索引 + 'bdwdname': None, # 模型参数 'data_set': None, # 数据集名称 @@ -1143,6 +1145,8 @@ class Config: def is_update_report(self): return global_config['is_update_report'] @property def weight_dict(self): return global_config['weight_dict'] + @property + def bdwdnames(self): return global_config['bdwdname'] # 模型参数 @property diff --git a/main_yuanyou.py b/main_yuanyou.py index b42d539..dd7ea5d 100644 --- a/main_yuanyou.py +++ b/main_yuanyou.py @@ -3,7 +3,7 @@ from lib.dataread import * from config_jingbo import * from lib.tools import SendMail, exception_logger -from models.nerulforcastmodels import ex_Model, model_losss, model_losss_juxiting, brent_export_pdf, tansuanli_export_pdf, pp_export_pdf, model_losss_juxiting +from models.nerulforcastmodels import ex_Model, model_losss, brent_export_pdf import datetime import torch torch.set_float32_matmul_precision("high") @@ -19,6 +19,7 @@ global_config.update({ 'is_update_report': is_update_report, 'settings': settings, 'weight_dict': weight_dict, + 'bdwdname': bdwdname, # 模型参数 @@ -88,6 +89,7 @@ global_config.update({ # 数据库配置 'sqlitedb': sqlitedb, 'bdwd_items': bdwd_items, + 'is_bdwd': is_bdwd, }) @@ -380,90 +382,91 @@ def predict_main(): # except: # logger.info('上传预警信息到数据库失败') - # try: - # if is_weekday: - if True: - logger.info('发送特征预警') - # 获取取消订阅的指标ID - quxiaodingyueidlist = get_waring_data() - # 上传预警信息到数据库 - warning_data_df = df_zhibiaoliebiao.copy() - warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ - '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] - # 重命名列名 - warning_data_df = warning_data_df.rename(columns={'指标名称': 'indicatorName', '指标id': 'indicatorId', '频度': 'frequency', - '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'updateSuspensionCycle'}) + try: + # if is_weekday: + if True: + logger.info('发送特征预警') + # 获取取消订阅的指标ID + quxiaodingyueidlist = get_waring_data() + # 上传预警信息到数据库 + warning_data_df = df_zhibiaoliebiao.copy() + warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ + '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] + # 重命名列名 + warning_data_df = warning_data_df.rename(columns={'指标名称': 'indicatorName', '指标id': 'indicatorId', '频度': 'frequency', + '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'updateSuspensionCycle'}) - warning_data_df['warningDate'] = datetime.date.today().strftime( - "%Y-%m-%d %H:%M:%S") - warning_data_df['dataSource'] = 8 - # 去掉取消订阅的指标 - print(warning_data_df.shape) - warning_data_df = warning_data_df[~warning_data_df['indicatorId'].isin( - quxiaodingyueidlist)] - print(warning_data_df.shape) - data = warning_data_df.to_json(orient='records', force_ascii=False) - data = data.replace('日度', '1') - data = data.replace('周度', '2') - data = data.replace('月度', '3') - data = json.loads(data) - push_waring_market_data(data) - # if is_update_warning_data: - # upload_warning_info(len(warning_data_df)) - # except: - # logger.info('上传预警信息到数据库失败') + warning_data_df['warningDate'] = datetime.date.today().strftime( + "%Y-%m-%d %H:%M:%S") + warning_data_df['dataSource'] = 8 + # 去掉取消订阅的指标 + print(warning_data_df.shape) + warning_data_df = warning_data_df[~warning_data_df['indicatorId'].isin( + quxiaodingyueidlist)] + print(warning_data_df.shape) + warning_data = warning_data_df.to_json( + orient='records', force_ascii=False) + warning_data = warning_data.replace('日度', '1') + warning_data = warning_data.replace('周度', '2') + warning_data = warning_data.replace('月度', '3') + warning_data = json.loads(warning_data) + push_waring_market_data(warning_data) + # if is_update_warning_data: + # upload_warning_info(len(warning_data_df)) + except: + logger.info('上传预警信息到数据库失败') - # if is_corr: - # df = corr_feature(df=df) + if is_corr: + df = corr_feature(df=df) - # df1 = df.copy() # 备份一下,后面特征筛选完之后加入ds y 列用 - # logger.info(f"开始训练模型...") - # row, col = df.shape + df1 = df.copy() # 备份一下,后面特征筛选完之后加入ds y 列用 + logger.info(f"开始训练模型...") + row, col = df.shape - # now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') - # ex_Model(df, - # horizon=global_config['horizon'], - # input_size=global_config['input_size'], - # train_steps=global_config['train_steps'], - # val_check_steps=global_config['val_check_steps'], - # early_stop_patience_steps=global_config['early_stop_patience_steps'], - # is_debug=global_config['is_debug'], - # dataset=global_config['dataset'], - # is_train=global_config['is_train'], - # is_fivemodels=global_config['is_fivemodels'], - # val_size=global_config['val_size'], - # test_size=global_config['test_size'], - # settings=global_config['settings'], - # now=now, - # etadata=etadata, - # modelsindex=global_config['modelsindex'], - # data=data, - # is_eta=global_config['is_eta'], - # end_time=global_config['end_time'], - # ) + now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + ex_Model(df, + horizon=global_config['horizon'], + input_size=global_config['input_size'], + train_steps=global_config['train_steps'], + val_check_steps=global_config['val_check_steps'], + early_stop_patience_steps=global_config['early_stop_patience_steps'], + is_debug=global_config['is_debug'], + dataset=global_config['dataset'], + is_train=global_config['is_train'], + is_fivemodels=global_config['is_fivemodels'], + val_size=global_config['val_size'], + test_size=global_config['test_size'], + settings=global_config['settings'], + now=now, + etadata=etadata, + modelsindex=global_config['modelsindex'], + data=data, + is_eta=global_config['is_eta'], + end_time=global_config['end_time'], + ) - # logger.info('模型训练完成') + logger.info('模型训练完成') - # logger.info('训练数据绘图ing') - # model_results3 = model_losss(sqlitedb, end_time=end_time) - # logger.info('训练数据绘图end') + logger.info('训练数据绘图ing') + model_results3 = model_losss(sqlitedb, end_time=end_time) + logger.info('训练数据绘图end') - # # 模型报告 - # logger.info('制作报告ing') - # title = f'{settings}--{end_time}-预测报告' # 报告标题 - # reportname = f'Brent原油大模型日度预测--{end_time}.pdf' # 报告文件名 - # reportname = reportname.replace(':', '-') # 替换冒号 - # brent_export_pdf(dataset=dataset, - # num_models=5 if is_fivemodels else 22, time=end_time, - # reportname=reportname, - # inputsize=global_config['horizon'], - # sqlitedb=sqlitedb - # ), + # 模型报告 + logger.info('制作报告ing') + title = f'{settings}--{end_time}-预测报告' # 报告标题 + reportname = f'Brent原油大模型日度预测--{end_time}.pdf' # 报告文件名 + reportname = reportname.replace(':', '-') # 替换冒号 + brent_export_pdf(dataset=dataset, + num_models=5 if is_fivemodels else 22, time=end_time, + reportname=reportname, + inputsize=global_config['horizon'], + sqlitedb=sqlitedb + ), - # logger.info('制作报告end') - # logger.info('模型训练完成') + logger.info('制作报告end') + logger.info('模型训练完成') - # push_market_value() + push_market_value() # # LSTM 单变量模型 # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) diff --git a/main_yuanyou_yuedu.py b/main_yuanyou_yuedu.py index aac53c0..68160f2 100644 --- a/main_yuanyou_yuedu.py +++ b/main_yuanyou_yuedu.py @@ -18,6 +18,7 @@ global_config.update({ 'is_fivemodels': is_fivemodels, 'is_update_report': is_update_report, 'settings': settings, + 'bdwdname': bdwdname, # 模型参数 @@ -349,42 +350,7 @@ def predict_main(): sqlitedb.insert_data('most_model', (datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S'), most_common_model,), columns=('ds', 'most_common_model',)) - try: - if is_weekday: - # if True: - logger.info('今天是周一,发送特征预警') - # 上传预警信息到数据库 - warning_data_df = df_zhibiaoliebiao.copy() - warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ - '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] - # 重命名列名 - warning_data_df = warning_data_df.rename(columns={'指标名称': 'INDICATOR_NAME', '指标id': 'INDICATOR_ID', '频度': 'FREQUENCY', - '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'UPDATE_SUSPENSION_CYCLE'}) - from sqlalchemy import create_engine - import urllib - global password - if '@' in password: - password = urllib.parse.quote_plus(password) - engine = create_engine( - f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}') - warning_data_df['WARNING_DATE'] = datetime.date.today().strftime( - "%Y-%m-%d %H:%M:%S") - warning_data_df['TENANT_CODE'] = 'T0004' - # 插入数据之前查询表数据然后新增id列 - existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine) - if not existing_data.empty: - max_id = existing_data['ID'].astype(int).max() - warning_data_df['ID'] = range( - max_id + 1, max_id + 1 + len(warning_data_df)) - else: - warning_data_df['ID'] = range(1, 1 + len(warning_data_df)) - warning_data_df.to_sql( - table_name, con=engine, if_exists='append', index=False) - if is_update_warning_data: - upload_warning_info(len(warning_data_df)) - except: - logger.info('上传预警信息到数据库失败') if is_corr: df = corr_feature(df=df) @@ -415,7 +381,7 @@ def predict_main(): end_time=global_config['end_time'], ) - # logger.info('模型训练完成') + logger.info('模型训练完成') logger.info('训练数据绘图ing') model_results3 = model_losss(sqlitedb, end_time=end_time) @@ -423,19 +389,19 @@ def predict_main(): push_market_value() - # # 模型报告 - # logger.info('制作报告ing') - # title = f'{settings}--{end_time}-预测报告' # 报告标题 - # reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名 - # reportname = reportname.replace(':', '-') # 替换冒号 - # brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time, - # reportname=reportname, - # inputsize = global_config['horizon'], - # sqlitedb=sqlitedb - # ), + # 模型报告 + logger.info('制作报告ing') + title = f'{settings}--{end_time}-预测报告' # 报告标题 + reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名 + reportname = reportname.replace(':', '-') # 替换冒号 + brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time, + reportname=reportname, + inputsize=global_config['horizon'], + sqlitedb=sqlitedb + ), - # logger.info('制作报告end') - # logger.info('模型训练完成') + logger.info('制作报告end') + logger.info('模型训练完成') # # LSTM 单变量模型 # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) @@ -462,12 +428,12 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - for i_time in pd.date_range('2025-3-13', '2025-3-31', freq='B'): - try: - global_config['end_time'] = i_time.strftime('%Y-%m-%d') - predict_main() - except Exception as e: - logger.info(f'预测失败:{e}') - continue + # for i_time in pd.date_range('2025-3-13', '2025-3-31', freq='B'): + # try: + # global_config['end_time'] = i_time.strftime('%Y-%m-%d') + # predict_main() + # except Exception as e: + # logger.info(f'预测失败:{e}') + # continue - # predict_main() + predict_main() diff --git a/main_yuanyou_zhoudu.py b/main_yuanyou_zhoudu.py index 8e32949..4160a3b 100644 --- a/main_yuanyou_zhoudu.py +++ b/main_yuanyou_zhoudu.py @@ -3,7 +3,7 @@ from lib.dataread import * from config_jingbo_zhoudu import * from lib.tools import SendMail, exception_logger -from models.nerulforcastmodels import ex_Model, model_losss, model_losss_juxiting, brent_export_pdf, tansuanli_export_pdf, pp_export_pdf, model_losss_juxiting +from models.nerulforcastmodels import ex_Model, model_losss, brent_export_pdf import datetime import torch torch.set_float32_matmul_precision("high") @@ -18,6 +18,7 @@ global_config.update({ 'is_fivemodels': is_fivemodels, 'is_update_report': is_update_report, 'settings': settings, + 'bdwdname': bdwdname, # 模型参数 @@ -78,6 +79,7 @@ global_config.update({ # 数据库配置 'sqlitedb': sqlitedb, + 'is_bdwd': is_bdwd, }) @@ -333,42 +335,6 @@ def predict_main(): sqlitedb.insert_data('most_model', (datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S'), most_common_model,), columns=('ds', 'most_common_model',)) - try: - if is_weekday: - # if True: - logger.info('今天是周一,发送特征预警') - # 上传预警信息到数据库 - warning_data_df = df_zhibiaoliebiao.copy() - warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ - '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] - # 重命名列名 - warning_data_df = warning_data_df.rename(columns={'指标名称': 'INDICATOR_NAME', '指标id': 'INDICATOR_ID', '频度': 'FREQUENCY', - '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'UPDATE_SUSPENSION_CYCLE'}) - from sqlalchemy import create_engine - import urllib - global password - if '@' in password: - password = urllib.parse.quote_plus(password) - - engine = create_engine( - f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}') - warning_data_df['WARNING_DATE'] = datetime.date.today().strftime( - "%Y-%m-%d %H:%M:%S") - warning_data_df['TENANT_CODE'] = 'T0004' - # 插入数据之前查询表数据然后新增id列 - existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine) - if not existing_data.empty: - max_id = existing_data['ID'].astype(int).max() - warning_data_df['ID'] = range( - max_id + 1, max_id + 1 + len(warning_data_df)) - else: - warning_data_df['ID'] = range(1, 1 + len(warning_data_df)) - warning_data_df.to_sql( - table_name, con=engine, if_exists='append', index=False) - if is_update_warning_data: - upload_warning_info(len(warning_data_df)) - except: - logger.info('上传预警信息到数据库失败') if is_corr: df = corr_feature(df=df) @@ -439,12 +405,12 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - for i_time in pd.date_range('2025-2-1', '2025-3-31', freq='B'): - try: - global_config['end_time'] = i_time.strftime('%Y-%m-%d') - predict_main() - except Exception as e: - logger.info(f'预测失败:{e}') - continue + # for i_time in pd.date_range('2025-2-1', '2025-3-31', freq='B'): + # try: + # global_config['end_time'] = i_time.strftime('%Y-%m-%d') + # predict_main() + # except Exception as e: + # logger.info(f'预测失败:{e}') + # continue - # predict_main() + predict_main() diff --git a/models/nerulforcastmodels.py b/models/nerulforcastmodels.py index ce6b874..b56d6d9 100644 --- a/models/nerulforcastmodels.py +++ b/models/nerulforcastmodels.py @@ -240,22 +240,30 @@ def ex_Model(df, horizon, input_size, train_steps, val_check_steps, early_stop_p # 把预测值上传到eta if config.is_update_eta: df_predict['ds'] = pd.to_datetime(df_predict['ds']) - dates = df_predict['ds'].dt.strftime('%Y-%m-%d') - for m in modelsindex.keys(): - if m == 'FEDformer': - continue - list = [] - for date, value in zip(dates, df_predict[m].round(2)): - list.append({'Date': date, 'Value': value}) - data['DataList'] = list - data['IndexCode'] = modelsindex[m] - # data['IndexName'] = f'价格预测{m}模型' - data['IndexName'] = data['IndexName'].replece('xx', m) - data['Remark'] = m - etadata.push_data(data) - - # return nf_test_preds + # 按行遍历df_predict + IndexName = data['IndexName'] + for index, row in df_predict.iterrows(): + try: + yy = config.bdwdnames[index] + except IndexError as e: + break + for m in modelsindex[index].keys(): + if m not in df_predict.columns: + continue + if m == 'FEDformer': + continue + list = [{'Date': config.end_time, 'Value': round(row[m], 2)}] + data['DataList'] = list + data['IndexCode'] = modelsindex[index][m] + # data['IndexName'] = f'价格预测{m}模型' + data['IndexName'] = data['IndexName'].replace('xx', m) + data['IndexName'] = data['IndexName'].replace('yy', yy) + data['Remark'] = m + print('预测数据上传到eta:') + etadata.push_data(data) + # print(data) + data['IndexName'] = IndexName return