dd/MDA/project/Main.ipynb

311 lines
82 KiB
Plaintext
Raw Permalink Normal View History

2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7669f948-8d8e-460f-a6b4-e4358db9ec58",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"from sklearn.preprocessing import StandardScaler, MinMaxScaler\n",
"from statsmodels.tsa.holtwinters import ExponentialSmoothing"
]
2025-02-13 11:06:03 +04:00
},
2025-02-13 11:25:06 +04:00
{
"cell_type": "markdown",
"id": "b0fa9e7b-c123-4b1e-8918-2397e77429c8",
"metadata": {},
"source": [
"Определим функцию сглаживания временного ряда, она понадобится позже.\n",
"\n",
"Например:\n",
"1. Метод скользящего окна. Параметр window задает ширину окна усреднения значений.\n",
"\n",
" ``return ts.rolling(window=5).mean()``\n",
"\n",
"2. Метод экспоненциального сглаживания (метод Хольта-Уинтерса)\n",
"\n",
"\n",
" варианты для параметра trend: \"add\", \"mul\", \"additive\", \"multiplicative\", None\n",
"\n",
"\n",
" варианты для параметра seasonal: \"add\", \"mul\", \"additive\", \"multiplicative\", None\n",
"\n",
"\n",
" seasonal_periods задает для модели предполагаемый интервал сезонности, когда ВР будет иметь похожие уровни и тенденции\n",
"\n",
" ``model = ExponentialSmoothing(ts, trend=\"additive\", seasonal=\"additive\", seasonal_periods=5)``\n",
" ``return model.fit().fittedvalues``"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b1525171-5f8b-410e-8b04-599757b1afe1",
"metadata": {},
"outputs": [],
"source": [
"def smooth_time_series(ts):\n",
" model = ExponentialSmoothing(ts, trend=\"additive\", seasonal=\"additive\", seasonal_periods=5)\n",
" return model.fit().fittedvalues"
]
},
{
"cell_type": "markdown",
"id": "6e2859e5-739e-4b49-8999-4a54aeebb903",
"metadata": {},
"source": [
"Для чтения из файла необходимо взять временные ряды из предложенных наборов и сохранить в csv файл как показано в примере, сформировав датасет"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "64bdc662-a64e-43be-a3d6-f4327b29f477",
"metadata": {},
"outputs": [],
"source": [
"dataset = pd.read_csv(\"ts2.csv\", delimiter=\";\")"
]
},
{
"cell_type": "markdown",
"id": "345981a3-8b6d-42dc-b5ab-aed2bdcce8d8",
"metadata": {},
"source": [
"после того как файл был прочтен, можно вывести содержимое временных рядов в консоль"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c228b5b9-5bfb-4786-887d-857d9b3409c7",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
" first second third\n",
"0 3 2.500000 1\n",
"1 2 2.833333 2\n",
"2 3 2.966667 3\n",
"3 3 3.066667 4\n",
"4 4 4.383333 5\n",
"5 6 6.466667 6\n",
"6 5 5.416667 7\n",
"7 5 5.433333 8\n",
"8 5 5.583333 9\n",
"9 5 5.683333 10\n",
"10 5 5.150000 11\n",
"11 5 5.633333 12\n",
"12 6 6.033333 13\n",
"13 12 12.866667 14\n",
"14 6 6.783333 15\n",
"15 6 6.500000 16\n"
]
}
],
"source": [
"print(dataset)"
]
},
{
"cell_type": "markdown",
"id": "e53b79b2-74e0-492d-bcab-5f3c47c25175",
"metadata": {},
"source": [
"Для выполнения первой части задания необходимо подобрать метод и параметры сглаживания временного ряда. Для этого выше реализован пример функции ``smooth_time_series``"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "74674c95-9af6-4b5a-ab08-30fe89c4e05e",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sds = dataset.apply(smooth_time_series)\n",
"\n",
"plt.plot(sds)\n",
"plt.plot(dataset)\n",
"plt.legend(['sm first', 'sm second', 'sm third', 'first', 'second', 'third'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "01e366c4-d7c0-4a01-85b7-f24c4383766d",
"metadata": {},
"source": [
"Выполним нормализацию. Варианты: MinMaxScaler; MaxAbsScaler; RobustScaler; StandardScaler"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "e609b470-19b7-4f52-af0d-b2643e926779",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
" first second third\n",
"0 0.032607 0.000000 0.000000\n",
"1 0.000000 0.057355 0.066665\n",
"2 0.113045 0.085473 0.133331\n",
"3 0.452163 0.447628 0.199999\n",
"4 0.169570 0.209032 0.266668\n",
"5 0.306525 0.276186 0.333334\n",
"6 0.273918 0.333541 0.399998\n",
"7 0.386964 0.361659 0.466664\n",
"8 0.726082 0.723814 0.533332\n",
"9 0.443488 0.485218 0.600001\n",
"10 0.580444 0.552372 0.666667\n",
"11 0.547837 0.609727 0.733331\n",
"12 0.660882 0.637845 0.799997\n",
"13 1.000000 1.000000 0.866665\n",
"14 0.717407 0.761404 0.933334\n",
"15 0.854362 0.828558 1.000000\n"
]
}
],
"source": [
"df = pd.DataFrame(MinMaxScaler().fit_transform(sds), columns=sds.columns)\n",
"print(df)"
]
},
{
"cell_type": "markdown",
"id": "8d7324a5-0610-4ac6-b270-1f0eedf00c2f",
"metadata": {},
"source": [
"Расчет степени корреляции между сглаженными временными рядами"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5e1850c7-17c7-49ae-9b71-594934054b03",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
" first second third\n",
"first 1.000000 0.992092 0.904237\n",
"second 0.992092 1.000000 0.916556\n",
"third 0.904237 0.916556 1.000000\n"
]
}
],
"source": [
"matrix = df.corr()\n",
"print(matrix)"
]
},
{
"cell_type": "markdown",
"id": "cbe8bb83-5958-4e9c-8963-ad04d5653eb8",
"metadata": {},
"source": [
"Для примера сравним корреляцию для несглаженных временных рядов"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "07268810-4221-49b0-8c59-a07470f15a4e",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
" first second third\n",
"first 1.000000 0.990651 0.704796\n",
"second 0.990651 1.000000 0.722877\n",
"third 0.704796 0.722877 1.000000\n"
]
}
],
"source": [
"matrix2 = dataset.corr()\n",
"print(matrix2)"
]
},
{
"cell_type": "markdown",
"id": "4c5a24e1-0734-4aaa-9212-56eadadd273f",
"metadata": {},
"source": [
"Визуализация матрицы корреляции:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "d3e09b25-63ec-4c52-9013-19f4be727ffb",
"metadata": {},
"outputs": [
2025-02-13 11:06:03 +04:00
{
2025-02-13 11:25:06 +04:00
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2025-02-13 11:06:03 +04:00
}
2025-02-13 11:25:06 +04:00
],
"source": [
"plt.imshow(matrix, cmap='Blues')\n",
"plt.colorbar()\n",
"variables = []\n",
"for i in matrix.columns:\n",
" variables.append(i)\n",
"plt.xticks(range(len(matrix)), variables, rotation=45, ha='right')\n",
"plt.yticks(range(len(matrix)), variables)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}