Skip to content

Instantly share code, notes, and snippets.

@naviarh
Last active August 1, 2018 19:00
Show Gist options
  • Save naviarh/5274fd7ae6bd3def6755c170b34a46e6 to your computer and use it in GitHub Desktop.
Save naviarh/5274fd7ae6bd3def6755c170b34a46e6 to your computer and use it in GitHub Desktop.
probe2(old).ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "probe2.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"[View in Colaboratory](https://colab.research.google.com/gist/naviarh/5274fd7ae6bd3def6755c170b34a46e6/probe2.ipynb)"
]
},
{
"metadata": {
"id": "pRjLc4Z8NJK_",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Алгоритм:\n",
"1. Находим все возможные полезные признаки;\n",
"2. Разделяем признаки на количественные и категориальные;\n",
"3. Формируем датафрейм признаков;\n",
"4. Создаём валидационную выборку;\n",
"5. Объект данных (ColumnarModelData.from_data_frame())\n",
"6. Создаём массив размеров матриц эмбеддинга\n",
"7. Создаём алгоритм обучения (моделль нейросети)\n",
"8. Обучаем модель\n"
]
},
{
"metadata": {
"id": "DrEiybPJLfEh",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Настройка Google Colaboratory"
]
},
{
"metadata": {
"id": "oLQi1xH4Lcv5",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"!pip install --upgrade pip\n",
"!pip3 install fastai"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "slMuW4iLDZkn",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Настройка платформы"
]
},
{
"metadata": {
"id": "a2D3n9FcMFNz",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "b6ca485a-f6a3-49bf-9173-ad93f0d19878"
},
"cell_type": "code",
"source": [
"# Put these at the top of every notebook, to get automatic reloading and inline plotting\n",
"%reload_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline\n",
"!pwd"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"/content\r\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "HrPDR7_0uEWN",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#!/usr/bin/env python3\n",
"# -*- coding: utf-8 -*-"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "rpY3XcKXXg_t",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 59
},
"outputId": "aa9b4230-7c8f-4bed-8896-1ed78c4d1a4b"
},
"cell_type": "code",
"source": [
"import subprocess, os\n",
"os.uname()"
],
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"posix.uname_result(sysname='Linux', nodename='40ae9d739b27', release='4.14.33+', version='#1 SMP Wed Jun 20 01:36:48 PDT 2018', machine='x86_64')"
]
},
"metadata": {
"tags": []
},
"execution_count": 4
}
]
},
{
"metadata": {
"id": "2BjQb7-MXjow",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"outputId": "5665dee4-99b5-4d02-c77f-e8b203147312"
},
"cell_type": "code",
"source": [
"from fastai.structured import *\n",
"from fastai.column_data import *\n",
"!pip3 show fastai torch | grep Name -A 1"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"Name: fastai\r\n",
"Version: 0.7.0\n",
"--\n",
"Name: torch\n",
"Version: 0.3.1\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "hByGgSB2XxXj",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"#from fastai.imports import *\n",
"#from fastai.transforms import *\n",
"#from fastai.conv_learner import *\n",
"#from fastai.model import *\n",
"#from fastai.dataset import *\n",
"#from fastai.sgdr import *\n",
"#from fastai.plots import *\n",
"#!pip3 show fastai torch | grep Name -A 1"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "mmGfSBAAYR6q",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "eb69ad41-f055-48e7-ed45-951bd6945886"
},
"cell_type": "code",
"source": [
"torch.cuda.set_device(0)\n",
"torch.cuda.get_device_name(0)"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Tesla K80'"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"metadata": {
"id": "N8A6-IJlZhwm",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Устанавливаем формат показа массивов numpy\n",
"np.set_printoptions(threshold=50, edgeitems=20)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "1B9wSpR6BvDe",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Создадим путь к каталогу PATH\n",
"PATH='btc/'\n",
"os.makedirs(PATH, exist_ok=True)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "EZZkvdu-YCXO",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Подготовка данных"
]
},
{
"metadata": {
"id": "NQIjwvD2aY_3",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Загрузка исторических данных по дням для BTC-USD с 1 января по 29 июля 2018\n",
"# Скачать здесь: https://drive.google.com/open?id=1VI31_Gqt2ly83v4kxsN0_FnDPSeplF0l\n",
"# Загрузить:\n",
"#'''\n",
"from google.colab import files\n",
"\n",
"uploaded = files.upload()\n",
"\n",
"for fn in uploaded.keys():\n",
" print('User uploaded file \"BTC-USD.csv\" with length {length} bytes'.format(\n",
" name=fn, length=len(uploaded[fn])))\n",
"#'''"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "4glnYHfWbLJs",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "107f3de7-2e1c-40e0-9407-5b62f55480ac"
},
"cell_type": "code",
"source": [
"# Видим нужный файл BTC-USD.csv\n",
"!ls"
],
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"text": [
"btc BTC-USD.csv datalab\r\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "6p_ieeGaPUuk",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 320
},
"outputId": "e455dcd9-b820-4ec1-c960-76dc3c6fa559"
},
"cell_type": "code",
"source": [
"# Здесь видим график цены по дням\n",
"data = pd.read_csv('BTC-USD.csv', error_bad_lines=False)[::1]\n",
"close_price = data.loc[:, 'Adj Close'].tolist()\n",
"plt.figure(figsize=(12,5))\n",
"plt.plot(close_price)\n",
"plt.show()"
],
"execution_count": 92,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f94f31d1908>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "aqmH49FWPrmR",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"outputId": "9ac1b71d-f059-4dfa-ee3d-cbb613b75a97"
},
"cell_type": "code",
"source": [
"# Таблица цен и объёмов по дням\n",
"data.head()"
],
"execution_count": 93,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2010-07-16</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2010-07-17</td>\n",
" <td>0.04951</td>\n",
" <td>0.08585</td>\n",
" <td>0.05941</td>\n",
" <td>0.08584</td>\n",
" <td>0.08584</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2010-07-18</td>\n",
" <td>0.08584</td>\n",
" <td>0.09307</td>\n",
" <td>0.07723</td>\n",
" <td>0.08080</td>\n",
" <td>0.08080</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2010-07-19</td>\n",
" <td>0.08080</td>\n",
" <td>0.08181</td>\n",
" <td>0.07426</td>\n",
" <td>0.07474</td>\n",
" <td>0.07474</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2010-07-20</td>\n",
" <td>0.07474</td>\n",
" <td>0.07921</td>\n",
" <td>0.06634</td>\n",
" <td>0.07921</td>\n",
" <td>0.07921</td>\n",
" <td>42</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Open High Low Close Adj Close Volume\n",
"0 2010-07-16 0.04951 0.04951 0.04951 0.04951 0.04951 0\n",
"1 2010-07-17 0.04951 0.08585 0.05941 0.08584 0.08584 5\n",
"2 2010-07-18 0.08584 0.09307 0.07723 0.08080 0.08080 49\n",
"3 2010-07-19 0.08080 0.08181 0.07426 0.07474 0.07474 20\n",
"4 2010-07-20 0.07474 0.07921 0.06634 0.07921 0.07921 42"
]
},
"metadata": {
"tags": []
},
"execution_count": 93
}
]
},
{
"metadata": {
"id": "DpmZZfCY6Zvk",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
},
"outputId": "dd78a662-88a2-4f02-85c8-c72113bdf0d0"
},
"cell_type": "code",
"source": [
"# Массив дат\n",
"date = data['Date']\n",
"date.head(5)"
],
"execution_count": 94,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 2010-07-16\n",
"1 2010-07-17\n",
"2 2010-07-18\n",
"3 2010-07-19\n",
"4 2010-07-20\n",
"Name: Date, dtype: object"
]
},
"metadata": {
"tags": []
},
"execution_count": 94
}
]
},
{
"metadata": {
"id": "Cu7vFv7q6xaf",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 139
},
"outputId": "f7c0243e-dd86-46d7-d9ad-96eef80e191b"
},
"cell_type": "code",
"source": [
"# Расширяем информацию о датах (всё что знает pandas о днях)\n",
"add_datepart(data, \"Date\", drop=False)\n",
"data.head(1)"
],
"execution_count": 95,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Day</th>\n",
" <th>Dayofweek</th>\n",
" <th>Dayofyear</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2010-07-16</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>16</td>\n",
" <td>4</td>\n",
" <td>197</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1279238400</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Open High Low Close Adj Close Volume Year \\\n",
"0 2010-07-16 0.04951 0.04951 0.04951 0.04951 0.04951 0 2010 \n",
"\n",
" Month Week Day Dayofweek Dayofyear Is_month_end Is_month_start \\\n",
"0 7 28 16 4 197 False False \n",
"\n",
" Is_quarter_end Is_quarter_start Is_year_end Is_year_start Elapsed \n",
"0 False False False False 1279238400 "
]
},
"metadata": {
"tags": []
},
"execution_count": 95
}
]
},
{
"metadata": {
"id": "Csgve0GQ1NtJ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
},
"outputId": "d3222117-f5bd-43d0-dca0-6380af001cd7"
},
"cell_type": "code",
"source": [
"# Удалим столбцы: дату, день месяца и день года\n",
"#data.drop('Adj Close', axis=1, inplace=True)\n",
"data.drop('Date', axis=1, inplace=True)\n",
"data.drop('Day', axis=1, inplace=True)\n",
"data.drop('Dayofyear', axis=1, inplace=True)\n",
"data.head(2)"
],
"execution_count": 96,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0</td>\n",
" <td>2010</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>4</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1279238400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.04951</td>\n",
" <td>0.08585</td>\n",
" <td>0.05941</td>\n",
" <td>0.08584</td>\n",
" <td>0.08584</td>\n",
" <td>5</td>\n",
" <td>2010</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1279324800</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Adj Close Volume Year Month Week \\\n",
"0 0.04951 0.04951 0.04951 0.04951 0.04951 0 2010 7 28 \n",
"1 0.04951 0.08585 0.05941 0.08584 0.08584 5 2010 7 28 \n",
"\n",
" Dayofweek Is_month_end Is_month_start Is_quarter_end Is_quarter_start \\\n",
"0 4 False False False False \n",
"1 5 False False False False \n",
"\n",
" Is_year_end Is_year_start Elapsed \n",
"0 False False 1279238400 \n",
"1 False False 1279324800 "
]
},
"metadata": {
"tags": []
},
"execution_count": 96
}
]
},
{
"metadata": {
"id": "q9F0cgtVMUuS",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 122
},
"outputId": "27fc4b1c-ec1b-44ec-f3f2-61ee152f76a3"
},
"cell_type": "code",
"source": [
"# Переводим год в натуральный ряд\n",
"data['Year'] -= np.min(data['Year'])\n",
"data.head(1)"
],
"execution_count": 97,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>4</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1279238400</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Adj Close Volume Year Month Week \\\n",
"0 0.04951 0.04951 0.04951 0.04951 0.04951 0 0 7 28 \n",
"\n",
" Dayofweek Is_month_end Is_month_start Is_quarter_end Is_quarter_start \\\n",
"0 4 False False False False \n",
"\n",
" Is_year_end Is_year_start Elapsed \n",
"0 False False 1279238400 "
]
},
"metadata": {
"tags": []
},
"execution_count": 97
}
]
},
{
"metadata": {
"id": "YroW8w9N2T05",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 339
},
"outputId": "483a8997-de3e-4483-c388-e66af71b1803"
},
"cell_type": "code",
"source": [
"# Заменяем булевые значения бинарными\n",
"data.Is_month_end = data.Is_month_end.astype('int')\n",
"data.Is_month_start = data.Is_month_start.astype('int')\n",
"data.Is_quarter_end = data.Is_quarter_end.astype('int')\n",
"data.Is_quarter_start = data.Is_quarter_start.astype('int')\n",
"data.Is_year_end = data.Is_year_end.astype('int')\n",
"data.Is_year_start = data.Is_year_start.astype('int')\n",
"data.head(8)"
],
"execution_count": 98,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0.04951</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279238400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.04951</td>\n",
" <td>0.08585</td>\n",
" <td>0.05941</td>\n",
" <td>0.08584</td>\n",
" <td>0.08584</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279324800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.08584</td>\n",
" <td>0.09307</td>\n",
" <td>0.07723</td>\n",
" <td>0.08080</td>\n",
" <td>0.08080</td>\n",
" <td>49</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279411200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.08080</td>\n",
" <td>0.08181</td>\n",
" <td>0.07426</td>\n",
" <td>0.07474</td>\n",
" <td>0.07474</td>\n",
" <td>20</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279497600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.07474</td>\n",
" <td>0.07921</td>\n",
" <td>0.06634</td>\n",
" <td>0.07921</td>\n",
" <td>0.07921</td>\n",
" <td>42</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279584000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.07921</td>\n",
" <td>0.08181</td>\n",
" <td>0.05050</td>\n",
" <td>0.05050</td>\n",
" <td>0.05050</td>\n",
" <td>129</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279670400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.05050</td>\n",
" <td>0.06767</td>\n",
" <td>0.05050</td>\n",
" <td>0.06262</td>\n",
" <td>0.06262</td>\n",
" <td>141</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279756800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.06262</td>\n",
" <td>0.06161</td>\n",
" <td>0.05049</td>\n",
" <td>0.05454</td>\n",
" <td>0.05454</td>\n",
" <td>26</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1279843200</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Adj Close Volume Year Month Week \\\n",
"0 0.04951 0.04951 0.04951 0.04951 0.04951 0 0 7 28 \n",
"1 0.04951 0.08585 0.05941 0.08584 0.08584 5 0 7 28 \n",
"2 0.08584 0.09307 0.07723 0.08080 0.08080 49 0 7 28 \n",
"3 0.08080 0.08181 0.07426 0.07474 0.07474 20 0 7 29 \n",
"4 0.07474 0.07921 0.06634 0.07921 0.07921 42 0 7 29 \n",
"5 0.07921 0.08181 0.05050 0.05050 0.05050 129 0 7 29 \n",
"6 0.05050 0.06767 0.05050 0.06262 0.06262 141 0 7 29 \n",
"7 0.06262 0.06161 0.05049 0.05454 0.05454 26 0 7 29 \n",
"\n",
" Dayofweek Is_month_end Is_month_start Is_quarter_end Is_quarter_start \\\n",
"0 4 0 0 0 0 \n",
"1 5 0 0 0 0 \n",
"2 6 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 1 0 0 0 0 \n",
"5 2 0 0 0 0 \n",
"6 3 0 0 0 0 \n",
"7 4 0 0 0 0 \n",
"\n",
" Is_year_end Is_year_start Elapsed \n",
"0 0 0 1279238400 \n",
"1 0 0 1279324800 \n",
"2 0 0 1279411200 \n",
"3 0 0 1279497600 \n",
"4 0 0 1279584000 \n",
"5 0 0 1279670400 \n",
"6 0 0 1279756800 \n",
"7 0 0 1279843200 "
]
},
"metadata": {
"tags": []
},
"execution_count": 98
}
]
},
{
"metadata": {
"id": "iyvGI0kyjxzy",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "92dcb981-310b-4083-d6ea-11edd0c2f2ca"
},
"cell_type": "code",
"source": [
"len(data)"
],
"execution_count": 99,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2931"
]
},
"metadata": {
"tags": []
},
"execution_count": 99
}
]
},
{
"metadata": {
"id": "qhOUgbJ54rFd",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "923e172a-e844-4660-abc1-d6a1abfa41b9"
},
"cell_type": "code",
"source": [
"# Разделим данные на тестовый и обучающий набор\n",
"len_test = 100 # последние 100 строк\n",
"\n",
"test = data[-len_test:]\n",
"data = data[:len(data)-len(test)]\n",
"\n",
"date_test = date[-len_test:]\n",
"date_data = date[:len(date)-len(date_test)]\n",
"\n",
"len(test), len(date_test)"
],
"execution_count": 100,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(100, 100)"
]
},
"metadata": {
"tags": []
},
"execution_count": 100
}
]
},
{
"metadata": {
"id": "ygIvBOBiSPEt",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "2a8fb6d9-78a4-4083-d050-6048cb804b5f"
},
"cell_type": "code",
"source": [
"# Количество обучающих записей и количество признаков (фич)\n",
"data.shape"
],
"execution_count": 101,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(2831, 17)"
]
},
"metadata": {
"tags": []
},
"execution_count": 101
}
]
},
{
"metadata": {
"id": "c-El6tFkpibX",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Делаем столбец даты индексом\n",
"#data.set_index('Date', inplace=True)\n",
"#data.head(2)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "R98nw8IXqRLj",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "889fcd06-a2ff-4a7d-b088-eebbdd4bbf2e"
},
"cell_type": "code",
"source": [
"# Просмотр фич (признаков)\n",
"data.columns"
],
"execution_count": 103,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume', 'Year', 'Month',\n",
" 'Week', 'Dayofweek', 'Is_month_end', 'Is_month_start', 'Is_quarter_end',\n",
" 'Is_quarter_start', 'Is_year_end', 'Is_year_start', 'Elapsed'],\n",
" dtype='object')"
]
},
"metadata": {
"tags": []
},
"execution_count": 103
}
]
},
{
"metadata": {
"id": "P60NrFN4qZxa",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "3a38653d-22c3-4743-cae3-e4f661b75584"
},
"cell_type": "code",
"source": [
"# Категориальные данные\n",
"categ_vars = ['Year', 'Month', 'Week', 'Dayofweek']\n",
"\n",
"# Бинарные данные\n",
"binary_vars = ['Is_month_end', 'Is_month_start', 'Is_quarter_end',\n",
" 'Is_quarter_start', 'Is_year_end', 'Is_year_start']\n",
"\n",
"# Количественные данные\n",
"contin_vars = ['Open', 'High', 'Low', 'Close', 'Volume', 'Elapsed']\n",
"\n",
"len(categ_vars)+len(binary_vars)+len(contin_vars), len(categ_vars), len(binary_vars), len(contin_vars)"
],
"execution_count": 104,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(16, 4, 6, 6)"
]
},
"metadata": {
"tags": []
},
"execution_count": 104
}
]
},
{
"metadata": {
"id": "Jbv75qnC6yxQ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "cb4f622f-9baa-444a-ca55-ece3b23b5489"
},
"cell_type": "code",
"source": [
"# Все категориальные данные (нужно для разделения обучающих и тестовых данных)\n",
"cat_bin = categ_vars+binary_vars\n",
"cat_bin"
],
"execution_count": 105,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['Year',\n",
" 'Month',\n",
" 'Week',\n",
" 'Dayofweek',\n",
" 'Is_month_end',\n",
" 'Is_month_start',\n",
" 'Is_quarter_end',\n",
" 'Is_quarter_start',\n",
" 'Is_year_end',\n",
" 'Is_year_start']"
]
},
"metadata": {
"tags": []
},
"execution_count": 105
}
]
},
{
"metadata": {
"id": "xeIA4A5IDr1b",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Разделим обучающие данные для нейросети\n",
"df, y, nas, mapper = proc_df(data, 'Adj Close', ignore_flds=cat_bin, do_scale=True,) # 'Adj Close' - на входит в df\n",
"y = np.log(y+1) # Логарифмируем целевую переменную, увеличенную на 1 для неотрицательности (потом брать экспоненту: np.exp(y)-1)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "ttXN0TqkEjMm",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "4f71d19f-4be2-415c-f64c-78013bc9f54e"
},
"cell_type": "code",
"source": [
"# Сместим курсы на день назад для определения предсказаний\n",
"df = df[:-1] # уберём в связи с этим последнюю выборку\n",
"date_data = date_data[:-1]\n",
"y = np.delete(y, (0))\n",
"y"
],
"execution_count": 110,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.08235, 0.0777 , 0.07208, 0.07623, 0.04927, 0.06074, 0.0531 , 0.04927, 0.05449, 0.05827, 0.05723,\n",
" 0.06757, 0.06081, 0.06565, 0.05931, 0.05827, 0.05827, 0.05543, 0.05921, 0.06044, ..., 8.98228,\n",
" 8.86892, 8.8327 , 8.84574, 8.83008, 8.86441, 8.91399, 8.8271 , 8.82342, 8.80024, 8.84191, 8.86091,\n",
" 8.82328, 8.83522, 8.85054, 8.97825, 8.97463, 8.99013, 9.03333, 8.99724])"
]
},
"metadata": {
"tags": []
},
"execution_count": 110
}
]
},
{
"metadata": {
"id": "lTGGHyTpegjD",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "d5df8519-db99-4bae-b519-f1f788f63c39"
},
"cell_type": "code",
"source": [
"np.min(y)"
],
"execution_count": 111,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.04926624130291805"
]
},
"metadata": {
"tags": []
},
"execution_count": 111
}
]
},
{
"metadata": {
"id": "ua5UqGYvfl_K",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "faba3c2c-6ce0-4cf4-e606-fabe8f078da3"
},
"cell_type": "code",
"source": [
"np.max(y)"
],
"execution_count": 112,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"9.870266298750181"
]
},
"metadata": {
"tags": []
},
"execution_count": 112
}
]
},
{
"metadata": {
"id": "f35ixRvfdvMQ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "7fc49ccd-e875-4fd2-b281-8e8c2f1d6b58"
},
"cell_type": "code",
"source": [
"len(df)"
],
"execution_count": 113,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2830"
]
},
"metadata": {
"tags": []
},
"execution_count": 113
}
]
},
{
"metadata": {
"id": "RU7n9_VWFN38",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Разделим тестовые данные для нейросети\n",
"df_test, y_test, nas, mapper = proc_df(test, 'Adj Close', ignore_flds=cat_bin, do_scale=True, mapper=mapper, na_dict=nas) # 'Adj Close' - на входит в df\n",
"y_test = np.log(y_test) # Логарифмируем целевую переменную (потом брать экспоненту: np.exp(y_test))"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "rcfyoPUJFovW",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "62f28e3a-7462-4a9c-f1d1-f696ad07728d"
},
"cell_type": "code",
"source": [
"# Сместим тестовые курсы на день назад для определения предсказаний\n",
"df_test = df_test[:-1] # уберём в связи с этим последнюю выборку\n",
"date_test = date_test[:-1]\n",
"y_test = np.delete(y_test, (0))\n",
"y_test"
],
"execution_count": 115,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([9.01066, 9.02423, 9.09123, 9.09781, 9.08516, 9.10145, 9.17531, 9.09084, 9.13585, 9.09812, 9.14329,\n",
" 9.14921, 9.13221, 9.11353, 9.13045, 9.18451, 9.17984, 9.19481, 9.17419, 9.1461 , ..., 8.79513,\n",
" 8.81849, 8.81096, 8.8052 , 8.74939, 8.76317, 8.74091, 8.7371 , 8.74333, 8.75845, 8.8159 , 8.89928,\n",
" 8.90699, 8.91965, 8.90027, 8.90996, 8.90905, 8.95131, 9.03549, 9.00825])"
]
},
"metadata": {
"tags": []
},
"execution_count": 115
}
]
},
{
"metadata": {
"id": "RpLEC3vSQR0h",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
},
"outputId": "e5be5eca-db88-498c-f24c-272f88e0539e"
},
"cell_type": "code",
"source": [
"df_test.head(2)"
],
"execution_count": 116,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2831</th>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2.649331</td>\n",
" <td>2.554950</td>\n",
" <td>2.746264</td>\n",
" <td>2.585204</td>\n",
" <td>1.103213</td>\n",
" <td>1.732095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2832</th>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>16</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2.589412</td>\n",
" <td>2.576307</td>\n",
" <td>2.766718</td>\n",
" <td>2.686765</td>\n",
" <td>1.133660</td>\n",
" <td>1.733319</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Year Month Week Dayofweek Is_month_end Is_month_start \\\n",
"2831 8 4 16 0 0 0 \n",
"2832 8 4 16 1 0 0 \n",
"\n",
" Is_quarter_end Is_quarter_start Is_year_end Is_year_start Open \\\n",
"2831 0 0 0 0 2.649331 \n",
"2832 0 0 0 0 2.589412 \n",
"\n",
" High Low Close Volume Elapsed \n",
"2831 2.554950 2.746264 2.585204 1.103213 1.732095 \n",
"2832 2.576307 2.766718 2.686765 1.133660 1.733319 "
]
},
"metadata": {
"tags": []
},
"execution_count": 116
}
]
},
{
"metadata": {
"id": "ZoxkbZhtGCsV",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 229
},
"outputId": "7e1dbae6-532f-4243-d7db-d5aae5b9e42a"
},
"cell_type": "code",
"source": [
"# Итоговый обучающий датафрейм\n",
"df.head()"
],
"execution_count": 119,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412458</td>\n",
" <td>-0.410293</td>\n",
" <td>-0.417710</td>\n",
" <td>-0.413042</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.731912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412458</td>\n",
" <td>-0.410280</td>\n",
" <td>-0.417706</td>\n",
" <td>-0.413029</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.730689</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412445</td>\n",
" <td>-0.410277</td>\n",
" <td>-0.417699</td>\n",
" <td>-0.413031</td>\n",
" <td>-0.298213</td>\n",
" <td>-1.729465</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412446</td>\n",
" <td>-0.410282</td>\n",
" <td>-0.417700</td>\n",
" <td>-0.413033</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.728242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412449</td>\n",
" <td>-0.410283</td>\n",
" <td>-0.417704</td>\n",
" <td>-0.413031</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.727018</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Year Month Week Dayofweek Is_month_end Is_month_start Is_quarter_end \\\n",
"0 0 7 28 4 0 0 0 \n",
"1 0 7 28 5 0 0 0 \n",
"2 0 7 28 6 0 0 0 \n",
"3 0 7 29 0 0 0 0 \n",
"4 0 7 29 1 0 0 0 \n",
"\n",
" Is_quarter_start Is_year_end Is_year_start Open High Low \\\n",
"0 0 0 0 -0.412458 -0.410293 -0.417710 \n",
"1 0 0 0 -0.412458 -0.410280 -0.417706 \n",
"2 0 0 0 -0.412445 -0.410277 -0.417699 \n",
"3 0 0 0 -0.412446 -0.410282 -0.417700 \n",
"4 0 0 0 -0.412449 -0.410283 -0.417704 \n",
"\n",
" Close Volume Elapsed \n",
"0 -0.413042 -0.298214 -1.731912 \n",
"1 -0.413029 -0.298214 -1.730689 \n",
"2 -0.413031 -0.298213 -1.729465 \n",
"3 -0.413033 -0.298214 -1.728242 \n",
"4 -0.413031 -0.298214 -1.727018 "
]
},
"metadata": {
"tags": []
},
"execution_count": 119
}
]
},
{
"metadata": {
"id": "hvqkFUPyGG4F",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"outputId": "92f26def-7455-4bc3-b3d2-74df69ee82fb"
},
"cell_type": "code",
"source": [
"# Проверим цены\n",
"np.exp(y)-1"
],
"execution_count": 120,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 0.08584, 0.0808 , 0.07474, 0.07921, 0.0505 , 0.06262, 0.05454, 0.0505 ,\n",
" 0.056 , 0.06 , 0.0589 , 0.0699 , 0.0627 , 0.06785, 0.0611 , 0.06 ,\n",
" 0.06 , 0.057 , 0.061 , 0.0623 , ..., 7959.77979, 7106.62012, 6853.75977, 6943.77002,\n",
" 6835.83984, 7074.6001 , 7434.2998 , 6815.5 , 6790.45019, 6634.85986, 6917.2002 , 7049.91992,\n",
" 6789.52979, 6871.06982, 6977.12988, 7927.72998, 7899.10986, 8022.50977, 8376.73047, 8079.77002])"
]
},
"metadata": {
"tags": []
},
"execution_count": 120
}
]
},
{
"metadata": {
"id": "ehmWI9zLpbpk",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "46a9b6fa-3f1b-479f-b05f-44ee9329b5a1"
},
"cell_type": "code",
"source": [
"# Сохраняем данные\n",
"datas = df\n",
"datas['y'] = y\n",
"datas['date'] = date_data\n",
"datas.to_csv(f'{PATH}datas.csv')\n",
"\n",
"tests = df_test\n",
"tests['y_test'] = y_test\n",
"tests['date_test'] = date_test\n",
"tests.to_csv(f'{PATH}tests.csv')\n",
"\n",
"!ls {PATH}"
],
"execution_count": 121,
"outputs": [
{
"output_type": "stream",
"text": [
"datas.csv df.csv models tests.csv tmp\r\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "kLYfUNWAzDaV",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Скачать обучающий набор\n",
"files.download(f'{PATH}datas.csv')"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "_CTwH_h_5ufo",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Скачать тестовый набор\n",
"files.download(f'{PATH}tests.csv')"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "NAM44HrYtfc1",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Cозранение и загрузка numpy массивов\n",
"'''\n",
"f = open(f'{PATH}data','wb')\n",
"np.save(f,data)\n",
"f.close()\n",
"\n",
"f = open(f'{PATH}data','rb')\n",
"data = np.load(f)\n",
"f.close()\n",
"\n",
"!head -n 3 '{PATH}data'\n",
"'''"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "9lg_qMlptl3s",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Быстрые сохранение и загрузка pandas\n",
"#data.to_feather(f'{PATH}data')\n",
"#data = pd.read_feather(f'{PATH}data')\n",
"#!head -n 3 '{PATH}data'"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "lFw9pKf-tFOX",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Нейронная сеть"
]
},
{
"metadata": {
"id": "yyDsevZsOGZT",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "3395695d-3cbc-4b27-8e0f-c98c7d8c6ce1"
},
"cell_type": "code",
"source": [
"# Проверить наличие данных\n",
"!ls {PATH}"
],
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"text": [
"datas.csv df.csv models tests.csv tmp\r\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "RKLMANJFV7o9",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Обучающий и тестовый наборы данных можно скачать с Google Drive:\n",
"\n",
"https://drive.google.com/open?id=1VciXZwYf28cPMcpAmXEP4wvmjHqVBvvM\n",
"\n",
"https://drive.google.com/open?id=1U_JYQwjql1AyVjxAfBt0u5xMphGeA6ft"
]
},
{
"metadata": {
"id": "HzvGuyu1Aoqz",
"colab_type": "code",
"colab": {
"resources": {
"http://localhost:8080/nbextensions/google.colab/files.js": {
"data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7Ci8vIE1heCBhbW91bnQgb2YgdGltZSB0byBibG9jayB3YWl0aW5nIGZvciB0aGUgdXNlci4KY29uc3QgRklMRV9DSEFOR0VfVElNRU9VVF9NUyA9IDMwICogMTAwMDsKCmZ1bmN0aW9uIF91cGxvYWRGaWxlcyhpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IHN0ZXBzID0gdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKTsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIC8vIENhY2hlIHN0ZXBzIG9uIHRoZSBvdXRwdXRFbGVtZW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBjYWxsCiAgLy8gdG8gdXBsb2FkRmlsZXNDb250aW51ZSBmcm9tIFB5dGhvbi4KICBvdXRwdXRFbGVtZW50LnN0ZXBzID0gc3RlcHM7CgogIHJldHVybiBfdXBsb2FkRmlsZXNDb250aW51ZShvdXRwdXRJZCk7Cn0KCi8vIFRoaXMgaXMgcm91Z2hseSBhbiBhc3luYyBnZW5lcmF0b3IgKG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIgeWV0KSwKLy8gd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzdGVwcyBhbmQgdGhlIFB5dGhvbiBzaWRlIGlzIGdvaW5nCi8vIHRvIHBvbGwgZm9yIGNvbXBsZXRpb24gb2YgZWFjaCBzdGVwLgovLyBUaGlzIHVzZXMgYSBQcm9taXNlIHRvIGJsb2NrIHRoZSBweXRob24gc2lkZSBvbiBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcCwKLy8gdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgc3RlcCBhcyB0aGUgaW5wdXQgdG8gdGhlIG5leHQgc3RlcC4KZnVuY3Rpb24gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpIHsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIGNvbnN0IHN0ZXBzID0gb3V0cHV0RWxlbWVudC5zdGVwczsKCiAgY29uc3QgbmV4dCA9IHN0ZXBzLm5leHQob3V0cHV0RWxlbWVudC5sYXN0UHJvbWlzZVZhbHVlKTsKICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5leHQudmFsdWUucHJvbWlzZSkudGhlbigodmFsdWUpID0+IHsKICAgIC8vIENhY2hlIHRoZSBsYXN0IHByb21pc2UgdmFsdWUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5leHQKICAgIC8vIHN0ZXAgb2YgdGhlIGdlbmVyYXRvci4KICAgIG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSA9IHZhbHVlOwogICAgcmV0dXJuIG5leHQudmFsdWUucmVzcG9uc2U7CiAgfSk7Cn0KCi8qKgogKiBHZW5lcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGJldHdlZW4gZWFjaCBhc3luYyBzdGVwIG9mIHRoZSB1cGxvYWQKICogcHJvY2Vzcy4KICogQHBhcmFtIHtzdHJpbmd9IGlucHV0SWQgRWxlbWVudCBJRCBvZiB0aGUgaW5wdXQgZmlsZSBwaWNrZXIgZWxlbWVudC4KICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIG91dHB1dCBkaXNwbGF5LgogKiBAcmV0dXJuIHshSXRlcmFibGU8IU9iamVjdD59IEl0ZXJhYmxlIG9mIG5leHQgc3RlcHMuCiAqLwpmdW5jdGlvbiogdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKSB7CiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CgogIGNvbnN0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRwdXRJZCk7CiAgb3V0cHV0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCiAgY29uc3QgcGlja2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgcmVzb2x2ZShlLnRhcmdldC5maWxlcyk7CiAgICB9KTsKICB9KTsKCiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FuY2VsKTsKICBjYW5jZWwudGV4dENvbnRlbnQgPSAnQ2FuY2VsIHVwbG9hZCc7CiAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBjYW5jZWwub25jbGljayA9ICgpID0+IHsKICAgICAgcmVzb2x2ZShudWxsKTsKICAgIH07CiAgfSk7CgogIC8vIENhbmNlbCB1cGxvYWQgaWYgdXNlciBoYXNuJ3QgcGlja2VkIGFueXRoaW5nIGluIHRpbWVvdXQuCiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9LCBGSUxFX0NIQU5HRV9USU1FT1VUX01TKTsKICB9KTsKCiAgLy8gV2FpdCBmb3IgdGhlIHVzZXIgdG8gcGljayB0aGUgZmlsZXMuCiAgY29uc3QgZmlsZXMgPSB5aWVsZCB7CiAgICBwcm9taXNlOiBQcm9taXNlLnJhY2UoW3BpY2tlZFByb21pc2UsIHRpbWVvdXRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSksCiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdzdGFydGluZycsCiAgICB9CiAgfTsKCiAgaWYgKCFmaWxlcykgewogICAgcmV0dXJuIHsKICAgICAgcmVzcG9uc2U6IHsKICAgICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICAgIH0KICAgIH07CiAgfQoKICBjYW5jZWwucmVtb3ZlKCk7CgogIC8vIERpc2FibGUgdGhlIGlucHV0IGVsZW1lbnQgc2luY2UgZnVydGhlciBwaWNrcyBhcmUgbm90IGFsbG93ZWQuCiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKCiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBsaS5hcHBlbmQoc3BhbihmaWxlLm5hbWUsIHtmb250V2VpZ2h0OiAnYm9sZCd9KSk7CiAgICBsaS5hcHBlbmQoc3BhbigKICAgICAgICBgKCR7ZmlsZS50eXBlIHx8ICduL2EnfSkgLSAke2ZpbGUuc2l6ZX0gYnl0ZXMsIGAgKwogICAgICAgIGBsYXN0IG1vZGlmaWVkOiAkewogICAgICAgICAgICBmaWxlLmxhc3RNb2RpZmllZERhdGUgPyBmaWxlLmxhc3RNb2RpZmllZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbi9hJ30gLSBgKSk7CiAgICBjb25zdCBwZXJjZW50ID0gc3BhbignMCUgZG9uZScpOwogICAgbGkuYXBwZW5kQ2hpbGQocGVyY2VudCk7CgogICAgb3V0cHV0RWxlbWVudC5hcHBlbmRDaGlsZChsaSk7CgogICAgY29uc3QgZmlsZURhdGFQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOwogICAgICB9OwogICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9KTsKICAgIC8vIFdhaXQgZm9yIHRoZSBkYXRhIHRvIGJlIHJlYWR5LgogICAgbGV0IGZpbGVEYXRhID0geWllbGQgewogICAgICBwcm9taXNlOiBmaWxlRGF0YVByb21pc2UsCiAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgYWN0aW9uOiAnY29udGludWUnLAogICAgICB9CiAgICB9OwoKICAgIC8vIFVzZSBhIGNodW5rZWQgc2VuZGluZyB0byBhdm9pZCBtZXNzYWdlIHNpemUgbGltaXRzLiBTZWUgYi82MjExNTY2MC4KICAgIGxldCBwb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAocG9zaXRpb24gPCBmaWxlRGF0YS5ieXRlTGVuZ3RoKSB7CiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGZpbGVEYXRhLmJ5dGVMZW5ndGggLSBwb3NpdGlvbiwgTUFYX1BBWUxPQURfU0laRSk7CiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoZmlsZURhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CgogICAgICBjb25zdCBiYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICAgICAgeWllbGQgewogICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICBhY3Rpb246ICdhcHBlbmQnLAogICAgICAgICAgZmlsZTogZmlsZS5uYW1lLAogICAgICAgICAgZGF0YTogYmFzZTY0LAogICAgICAgIH0sCiAgICAgIH07CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPQogICAgICAgICAgYCR7TWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCl9JSBkb25lYDsKICAgIH0KICB9CgogIC8vIEFsbCBkb25lLgogIHlpZWxkIHsKICAgIHJlc3BvbnNlOiB7CiAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgIH0KICB9Owp9CgpzY29wZS5nb29nbGUgPSBzY29wZS5nb29nbGUgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYiA9IHNjb3BlLmdvb2dsZS5jb2xhYiB8fCB7fTsKc2NvcGUuZ29vZ2xlLmNvbGFiLl9maWxlcyA9IHsKICBfdXBsb2FkRmlsZXMsCiAgX3VwbG9hZEZpbGVzQ29udGludWUsCn07Cn0pKHNlbGYpOwo=",
"ok": true,
"headers": [
[
"content-type",
"application/javascript"
]
],
"status": 200,
"status_text": ""
}
},
"base_uri": "https://localhost:8080/",
"height": 144
},
"outputId": "d317a047-cf09-4312-f57f-e18c3472c459"
},
"cell_type": "code",
"source": [
"# Загрузить данные обучающий набор datas.csv\n",
"uploaded = files.upload()\n",
"\n",
"# Загрузить данные тестовый набор tests.csv\n",
"uploaded = files.upload()"
],
"execution_count": 124,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <input type=\"file\" id=\"files-1ea6cd5a-bae9-4157-b6a1-f0fe13bb3a21\" name=\"files[]\" multiple disabled />\n",
" <output id=\"result-1ea6cd5a-bae9-4157-b6a1-f0fe13bb3a21\">\n",
" Upload widget is only available when the cell has been executed in the\n",
" current browser session. Please rerun this cell to enable.\n",
" </output>\n",
" <script src=\"/nbextensions/google.colab/files.js\"></script> "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Saving tests.csv to tests.csv\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <input type=\"file\" id=\"files-6c9d25ab-e976-4948-98fc-63a96152f37b\" name=\"files[]\" multiple disabled />\n",
" <output id=\"result-6c9d25ab-e976-4948-98fc-63a96152f37b\">\n",
" Upload widget is only available when the cell has been executed in the\n",
" current browser session. Please rerun this cell to enable.\n",
" </output>\n",
" <script src=\"/nbextensions/google.colab/files.js\"></script> "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Saving datas.csv to datas.csv\n",
"datas.csv df.csv models tests.csv tmp\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "1q_bVNk7Ntyh",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Скопировать данные в рабочий каталог\n",
"!mv datas.csv '{PATH}'\n",
"!mv tests.csv '{PATH}'\n",
"!ls {PATH}"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "n8l8TSbMpRAc",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
},
"outputId": "ce00ce94-e55c-48d7-f1c6-0d9a1978c8bb"
},
"cell_type": "code",
"source": [
"# Чтение данных\n",
"df = pd.read_csv(f'{PATH}datas.csv')\n",
"df_test = pd.read_csv(f'{PATH}tests.csv')\n",
"\n",
"y = df['y']\n",
"date_data = df['date']\n",
"y_test = df_test['y_test']\n",
"date_test = df_test['date_test']\n",
"\n",
"df.drop('y', axis=1, inplace=True)\n",
"df.drop('date', axis=1, inplace=True)\n",
"df_test.drop('y_test', axis=1, inplace=True)\n",
"df_test.drop('date_test', axis=1, inplace=True)\n",
"\n",
"date_data[:5]"
],
"execution_count": 18,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 2010-07-16\n",
"1 2010-07-17\n",
"2 2010-07-18\n",
"3 2010-07-19\n",
"4 2010-07-20\n",
"Name: date, dtype: object"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
}
]
},
{
"metadata": {
"id": "CWM04b4wH7Gl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 246
},
"outputId": "fdc1df2b-d4d4-45c0-acca-2750cdde82cf"
},
"cell_type": "code",
"source": [
"# Обучающий датафрейм\n",
"df.head()"
],
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>Year</th>\n",
" <th>Month</th>\n",
" <th>Week</th>\n",
" <th>Dayofweek</th>\n",
" <th>Is_month_end</th>\n",
" <th>Is_month_start</th>\n",
" <th>Is_quarter_end</th>\n",
" <th>Is_quarter_start</th>\n",
" <th>Is_year_end</th>\n",
" <th>Is_year_start</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Elapsed</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412458</td>\n",
" <td>-0.410293</td>\n",
" <td>-0.417710</td>\n",
" <td>-0.413042</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.731912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412458</td>\n",
" <td>-0.410280</td>\n",
" <td>-0.417706</td>\n",
" <td>-0.413029</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.730689</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>28</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412445</td>\n",
" <td>-0.410277</td>\n",
" <td>-0.417699</td>\n",
" <td>-0.413031</td>\n",
" <td>-0.298213</td>\n",
" <td>-1.729465</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412446</td>\n",
" <td>-0.410282</td>\n",
" <td>-0.417700</td>\n",
" <td>-0.413033</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.728242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>29</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>-0.412449</td>\n",
" <td>-0.410283</td>\n",
" <td>-0.417704</td>\n",
" <td>-0.413031</td>\n",
" <td>-0.298214</td>\n",
" <td>-1.727018</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Year Month Week Dayofweek Is_month_end Is_month_start \\\n",
"0 0 0 7 28 4 0 0 \n",
"1 1 0 7 28 5 0 0 \n",
"2 2 0 7 28 6 0 0 \n",
"3 3 0 7 29 0 0 0 \n",
"4 4 0 7 29 1 0 0 \n",
"\n",
" Is_quarter_end Is_quarter_start Is_year_end Is_year_start Open \\\n",
"0 0 0 0 0 -0.412458 \n",
"1 0 0 0 0 -0.412458 \n",
"2 0 0 0 0 -0.412445 \n",
"3 0 0 0 0 -0.412446 \n",
"4 0 0 0 0 -0.412449 \n",
"\n",
" High Low Close Volume Elapsed \n",
"0 -0.410293 -0.417710 -0.413042 -0.298214 -1.731912 \n",
"1 -0.410280 -0.417706 -0.413029 -0.298214 -1.730689 \n",
"2 -0.410277 -0.417699 -0.413031 -0.298213 -1.729465 \n",
"3 -0.410282 -0.417700 -0.413033 -0.298214 -1.728242 \n",
"4 -0.410283 -0.417704 -0.413031 -0.298214 -1.727018 "
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"metadata": {
"id": "nmZQKmozIAdl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
},
"outputId": "47dcc794-dfdd-4d68-d982-007f7a840819"
},
"cell_type": "code",
"source": [
"# Обучающие цены\n",
"np.exp(y[-5:])-1"
],
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2825 7927.729980\n",
"2826 7899.109863\n",
"2827 8022.509766\n",
"2828 8376.730469\n",
"2829 8079.770020\n",
"Name: y, dtype: float64"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"metadata": {
"id": "HGNZ5ubXRU1m",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Удалить лишний столбец, если есть\n",
"df.drop('Unnamed: 0', axis=1, inplace=True)\n",
"df_test.drop('Unnamed: 0', axis=1, inplace=True)"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "lNaVd1HyG1rq",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "3e407259-ebd6-4845-ba07-e9e9bf8e16bc"
},
"cell_type": "code",
"source": [
"# Просмотр фич (признаков)\n",
"df.columns"
],
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['Unnamed: 0', 'Year', 'Month', 'Week', 'Dayofweek', 'Is_month_end',\n",
" 'Is_month_start', 'Is_quarter_end', 'Is_quarter_start', 'Is_year_end',\n",
" 'Is_year_start', 'Open', 'High', 'Low', 'Close', 'Volume', 'Elapsed'],\n",
" dtype='object')"
]
},
"metadata": {
"tags": []
},
"execution_count": 21
}
]
},
{
"metadata": {
"id": "_9audFp9F7Ol",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "21b4cf27-af81-4eca-f716-2c8bc0f26ed8"
},
"cell_type": "code",
"source": [
"# Категориальные данные\n",
"categ_vars = ['Year', 'Month', 'Week', 'Dayofweek']\n",
"\n",
"# Бинарные данные\n",
"binary_vars = ['Is_month_end', 'Is_month_start', 'Is_quarter_end',\n",
" 'Is_quarter_start', 'Is_year_end', 'Is_year_start']\n",
"\n",
"# Количественные данные\n",
"contin_vars = ['Open', 'High', 'Low', 'Close', 'Volume', 'Elapsed']\n",
"\n",
"len(categ_vars)+len(binary_vars)+len(contin_vars), len(categ_vars), len(binary_vars), len(contin_vars)"
],
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(16, 4, 6, 6)"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
}
]
},
{
"metadata": {
"id": "zRGWmM-cGGtr",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "baade8cd-5c02-4932-e0a1-8da27bfbaf02"
},
"cell_type": "code",
"source": [
"# Все категориальные данные (нужно для матриц эмбеддинга)\n",
"cat_bin = categ_vars+binary_vars\n",
"cat_bin"
],
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['Year',\n",
" 'Month',\n",
" 'Week',\n",
" 'Dayofweek',\n",
" 'Is_month_end',\n",
" 'Is_month_start',\n",
" 'Is_quarter_end',\n",
" 'Is_quarter_start',\n",
" 'Is_year_end',\n",
" 'Is_year_start']"
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"metadata": {
"id": "JmLa-KnmGWND",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "123abe8e-02c3-4e1b-82a8-966fc319326c"
},
"cell_type": "code",
"source": [
"# Размеры категорий (+1 для неизвестного нейронке значения признака)\n",
"categ_sz = [(c, len(np.unique(df[c]))+1) for c in categ_vars]\n",
"categ_sz # мощностя категорий"
],
"execution_count": 24,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[('Year', 10), ('Month', 13), ('Week', 54), ('Dayofweek', 8)]"
]
},
"metadata": {
"tags": []
},
"execution_count": 24
}
]
},
{
"metadata": {
"id": "k3jyWh18Gf31",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
},
"outputId": "50dd6a21-c800-4478-e120-451c42623e1f"
},
"cell_type": "code",
"source": [
"# Размеры бинарных данных\n",
"binary_sz = [(c, 3) for c in binary_vars]\n",
"binary_sz # мощностя бинаров = 3"
],
"execution_count": 25,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[('Is_month_end', 3),\n",
" ('Is_month_start', 3),\n",
" ('Is_quarter_end', 3),\n",
" ('Is_quarter_start', 3),\n",
" ('Is_year_end', 3),\n",
" ('Is_year_start', 3)]"
]
},
"metadata": {
"tags": []
},
"execution_count": 25
}
]
},
{
"metadata": {
"id": "FfxHyhkxGl6i",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "63fcb259-3a82-45e6-ae44-2170a049763b"
},
"cell_type": "code",
"source": [
"# Размеры матриц эмбэддинга\n",
"emb_szs = [(c, min(50, (c+1)//2)) for _,c in categ_sz]\n",
"emb_szs += [(c, 2) for _,c in binary_sz]\n",
"emb_szs"
],
"execution_count": 26,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[(10, 5),\n",
" (13, 7),\n",
" (54, 27),\n",
" (8, 4),\n",
" (3, 2),\n",
" (3, 2),\n",
" (3, 2),\n",
" (3, 2),\n",
" (3, 2),\n",
" (3, 2)]"
]
},
"metadata": {
"tags": []
},
"execution_count": 26
}
]
},
{
"metadata": {
"id": "hwOg45CWPSvN",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Формируем случайные индексы валидационной выборки\n",
"val_ratio = 0.2 # 20% от обучающей выборки\n",
"\n",
"len_val = int(len(df)*val_ratio)-1\n",
"print(len_val) # размер валидационной выборки\n",
"\n",
"val_idx = np.random.choice(len(df), size=len_val, replace=False)\n",
"val_idx # индексы валидационной выборки"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "0z1DUySSPcdB",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"outputId": "fe43e637-65d4-413c-b5a2-963ac757bd5d"
},
"cell_type": "code",
"source": [
"# Формируем индексы валидационной выборки из функции fastai\n",
"val_idx = get_cv_idxs(len(df)-1)\n",
"val_idx"
],
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([1025, 1295, 2671, 1583, 196, 1832, 322, 1298, 2329, 1452, 1565, 324, 554, 1543, 817, 2288, 2010,\n",
" 1270, 803, 1448, ..., 1421, 1577, 857, 2201, 1211, 565, 2731, 1330, 788, 1501, 1230, 435, 691,\n",
" 237, 789, 109, 1849, 163, 1878, 252])"
]
},
"metadata": {
"tags": []
},
"execution_count": 33
}
]
},
{
"metadata": {
"id": "KGr6wMXUPk1J",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "bd449b23-2b79-4f30-c232-564f2420aaba"
},
"cell_type": "code",
"source": [
"print(len(val_idx)) # размер валидационной выборки"
],
"execution_count": 34,
"outputs": [
{
"output_type": "stream",
"text": [
"565\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "Q6IusIHWHuXX",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "e92ea309-f8eb-43b7-c999-b11b5e92a974"
},
"cell_type": "code",
"source": [
"# Получаем диапазон цен для нейросети\n",
"y_range = (0, np.max(y)*1.5)\n",
"y_range_test = y_range\n",
"y_range"
],
"execution_count": 35,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(0, 14.805399448125268)"
]
},
"metadata": {
"tags": []
},
"execution_count": 35
}
]
},
{
"metadata": {
"id": "t2uNUK7fJots",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "cca99914-ba1a-449f-a4a2-4047fa674ba4"
},
"cell_type": "code",
"source": [
"# Создаём метрику оценки качества модели\n",
"\n",
"# 1 - |1 - y_pred/targ|\n",
"\n",
"def inv_y(a): return np.exp(a) # восстановление цены курсов\n",
"\n",
"def metrics(y_pred, targ):\n",
" result = 1 - np.absolute(1 - y_pred/targ)\n",
" return result.mean()\n",
"metrics"
],
"execution_count": 36,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<function __main__.metrics>"
]
},
"metadata": {
"tags": []
},
"execution_count": 36
}
]
},
{
"metadata": {
"id": "G1k4cYtWTdk1",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "0f30d104-b424-4da5-807d-4937eae91dc5"
},
"cell_type": "code",
"source": [
"# Данные модели для обучения\n",
"md = ColumnarModelData.from_data_frame(PATH, # каталог модели\n",
" val_idx, # валидационная выборка\n",
" df, # обучающий датафрейм\n",
" y.astype(np.float32), # целевая переменная\n",
" cat_flds=cat_bin, # категориальные признаки\n",
" bs=1, # размер минибатча\n",
" test_df=df_test) # тестоввая выбока\n",
"md"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<fastai.column_data.ColumnarModelData at 0x7fbd7f3372b0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 42
}
]
},
{
"metadata": {
"id": "mohMAOaXTdpl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 510
},
"outputId": "d87a324d-67dc-4821-b894-aca6f3aba57f"
},
"cell_type": "code",
"source": [
"# Модель нейронной сети\n",
"m = md.get_learner(emb_szs, # матрица эмбеддинга для категориальных признаков\n",
" len(contin_vars), # количество количественных признаков\n",
" 0.04, # дропаут для эмбеддинга\n",
" 1, # Количество чисел на выходе (мы предсказываем продажи)\n",
" [1000,500], # список количества активаций каждого слоя\n",
" [0.001,0.01], # список дропаутов для каждого слоя\n",
" y_range=y_range) # целевая переменная\n",
"m "
],
"execution_count": 43,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"MixedInputModel(\n",
" (embs): ModuleList(\n",
" (0): Embedding(10, 5)\n",
" (1): Embedding(13, 7)\n",
" (2): Embedding(54, 27)\n",
" (3): Embedding(8, 4)\n",
" (4): Embedding(3, 2)\n",
" (5): Embedding(3, 2)\n",
" (6): Embedding(3, 2)\n",
" (7): Embedding(3, 2)\n",
" (8): Embedding(3, 2)\n",
" (9): Embedding(3, 2)\n",
" )\n",
" (lins): ModuleList(\n",
" (0): Linear(in_features=61, out_features=1000, bias=True)\n",
" (1): Linear(in_features=1000, out_features=500, bias=True)\n",
" )\n",
" (bns): ModuleList(\n",
" (0): BatchNorm1d(1000, eps=1e-05, momentum=0.1, affine=True)\n",
" (1): BatchNorm1d(500, eps=1e-05, momentum=0.1, affine=True)\n",
" )\n",
" (outp): Linear(in_features=500, out_features=1, bias=True)\n",
" (emb_drop): Dropout(p=0.04)\n",
" (drops): ModuleList(\n",
" (0): Dropout(p=0.001)\n",
" (1): Dropout(p=0.01)\n",
" )\n",
" (bn): BatchNorm1d(6, eps=1e-05, momentum=0.1, affine=True)\n",
")"
]
},
"metadata": {
"tags": []
},
"execution_count": 43
}
]
},
{
"metadata": {
"id": "I5NPRbL1Tdgl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"outputId": "d404d23f-aab7-4a16-e044-a24d28e15bea"
},
"cell_type": "code",
"source": [
"# Вычисление скорости обучения\n",
"m.lr_find()"
],
"execution_count": 44,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2017fd6f0d9443f4ac609af957160eca",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
" 28%|██▊ | 635/2265 [00:13<00:33, 48.79it/s, loss=2.46]"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "gQJKANu-7i9_",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 283
},
"outputId": "61aebe68-3a81-400c-e588-a45a20667cdd"
},
"cell_type": "code",
"source": [
"# График подбора скорости обучения\n",
"m.sched.plot(100)"
],
"execution_count": 46,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEKCAYAAAAb7IIBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xd4XNW18OHfdHVZZdTcJLdt3Fsw\ntrFN74QWUiAhheSmXi7pPSHhpockpAfyATeFhEACCWB6tSkuuNt4u8mWJduyepdGU74/zsxo1OuZ\n0WjW+zw8zJxpW/LorLPbWpZAIIAQQojEY411A4QQQsSGBAAhhEhQEgCEECJBSQAQQogEJQFACCES\nlAQAIYRIUPZYN2CoqqqaZL2qGFeyslKoq2uNdTOEGJDbnW7p7zHpAQgxQna7LdZNEGJUJAAIIUSC\nkgAghBAJSgKAEEIkKAkAQgiRoCQACCFEgpIAIIQQCSphAsDJ6hbKKpti3QwhhBg3EiYA3PvEfn7x\n8K5YN0MIIcYNU3cCK6WSgb3AnVrrByKOHwNOAL7goZu11hVmtqWxxUN9s4e2Di/JrrjZAC2EEKYx\n+0z4DaC2n8cu11o3m/z5YZ5OI9ZUN7QzNS8tWh8rhBDjlmkBQCk1F5gHPGnWZwzFwRP1/N/TB2hp\n9wJQXd8mAUAIITC3B3AX8Bngg/08/nulVDGwCfiq1nrAZG9ZWSkjyr2y42gtp2q6Ena1+wK43enD\nfh8h+iLfJRHPTAkASqlbgDe01qVKqb6e8i3gaYzhoceAG4BHBnrPkWZdTLF3T4RXWlFPVZWsBhKj\n53any3dJjHsDXaSY1QO4EpihlLoKmAJ0KKXKtdbPA2it/xR6olJqA7CQQQLASOVlpXS7X9PQbsbH\nCCFE3DElAGit3xO6rZS6AzgWOvkrpTKBfwBXa609wHpMOvkDTEpzdrtfVS8BQAghIIoFYZRSHwIa\ntNaPBq/631RKtQE7MDEAWCzdh4BqGtsIBAK9jgshRKIxPQBore/o49jdwN1mf3aI3WbF6/MD0Nbh\no6XdS1qyI1ofL4QQ41JC7AROcXVfPSTzAEIIkSABoOfO36r6thi1RAghxo+ECABJPQJAtfQAhBAi\nMQLAR6+axxR3Gp+4Zj4A1Q3SAxBCiITIijY5N5Xv3no2re2dgPQAhBACEqQHEJKS5CDZZZcAIIQQ\nJFgAAHBnJlHdYOwFEEKIRJZwASAnMwlPp5+m1s5YN0UIIWIq4QKAe1IyIPMAQgiRcAEgJzMJkJVA\nQgiRcAHAnSk9ACGEgAQMALmhHoDsBhZCJLiECwDZGUYAqG3qiHFLhBAithIuAKQk2Ul22ahtlCEg\nIURiS7gAAJCdnkRNo/QAhBCJLSEDQFaGi7YOL20d3lg3RQghYiYhA0BucB5A0kILIRJZQgaAqfnp\nAByvbIpxS4QQInZMzQaqlEoG9gJ3aq0fiDh+EfB9wAds0FrfaWY7eiouMALAsdNNrF0UzU8WQojx\nw+wewDeA2j6O/xK4AVgDXKKUmmdyO7qZ4k7FYoGKM83R/FghhBhXTAsASqm5wDzgyR7HZwC1WusT\nWms/sAG40Kx29MVht5GbmcTp2tZofqwQQowrZvYA7gI+18fxAqAq4v4ZoNDEdvSpIDuVxtbOcJEY\nIYRINKbMASilbgHe0FqXKqUGe7plKO+ZlZWC3W4bddtCZk3LYs/RGp7aWs4nrpeJADEybnd6rJsg\nxIiZNQl8JTBDKXUVMAXoUEqVa62fB05i9AJCJgePDaiubmyHa9YtyOfxjUfZuKOc688txmIZUhwS\nIsztTqeqSlaSifFtoIsUUwKA1vo9odtKqTuAY8GTP1rrY0qpDKVUMVAOXAXcbEY7BpKZ5mLJ7Fy2\nHThDVUM7ecE6AUIIkSiitg9AKfUhpdR1wbufBP4GbAQe0lofjFY7Is0ozACg7LRcxQkhEo+p+wAA\ntNZ39HHsVWCV2Z89mLws46q/SorDCCESUELuBA4J1waQ4jBCiASU4AEgWB2sXgKAECLxJHQASEmy\nk5pkp1I2hAkhElBCBwCAGUWZnKlvY/eRmvCxM/VtPPLyETq9fuqaOvjib19j1+HqGLZSCCHGXsIH\ngHnFWQD84uFd+AMBAH7/2F42vHmcZ7eW8equk9Q0dnD3I7tj2UwhhBhzCR8A1i8pCt8ODQU1tRrp\nIY6dbiIt2RGTdgkhhNkSPgAkOe3cdNFsAP72/CEAsjNcAJyqkbkBIcTElfABAGDBjBwA9pbWcu/j\n++jo9AFwsrqFvz7XtUctEBwiEkKIsbThzeN85IcvUhPlJekSAICC7BTWLTaGgt7YV0lZZd91Amql\nkLwQwgSPvHwEgL8+dzCqF5oSAIJCu4JDcoLDQJEqqo3A8LvH9vL3Fw5FpV1CiMSx83A1O6O44lAC\nQFBqUvesGFPz0rn1yrO6HauoasEfCLD1wBme3Xoims0TQkxgkeefaM49SgAIKshO6XY/PcVBflb3\nY+VVzbR3eMP3O73+qLRNCDGxpaU4w7db2qJXpEoCQJCalsVHrui64s9IdZITzBUUUlHVQnN7VwCo\naZQUEkKI0XM5uk7FVfXRS04pASDC6oUF2G1GYZiMFCeZaV1ReXp+OidrWmlu7YrO1VH8hxJCTFwd\nHh8ZqU6cDivbD1ZTOcYFsPojASCC1WIhJ8O46s9IdWKNqBI2xZ2K1+fn+OnG8LFoRmohxMTV3ukj\nyWlj7rQs/IEAX7vnzah8run1AOJN7qRkKuvayEgxdgB//r1LaG33cjq4S/ipzWXh51ZJFlEhxBho\n9/jITHVy8Yqp7D5SQyAAja0eMiLmBswgPYAeprhTsViMQAAwvzibd8zNC08SR9YOkEIyQojR8gcC\neDw+khw25pdkc9XqYgDKKs2vVCgBoId3rinhG7eswN2jRnBfNYNlCEgIMVxNrR7+s6kUTzDjQGen\nnwCQ5DIGZEoKjSLuuqze9LZIAOgh2WWnJFgrONJkdyoOe9evy26zyBCQEGLY7n5kN49tKuWlHRUA\ntHuMlYUuhw2AecXZOB1WXtxeQU1DO4fK62ls8ZjSFtPmAJRSKcADQD6QBNyptX4i4vFjwAnAFzx0\ns9a6wqz2jJbdZuWOD7+Dr9+7GTD+kXYfqaGlvZPUJMkYKoQYmqMnjYUkoazD7cGegMtpBACXw8Z5\nSybz7NYT/HtTKa/vPc26xYXcctncMW+LmZPAVwPbtNY/VkpNB54DnujxnMu11n0n3hmHQiUkZ03O\nDA8JVdW3kVogAUAIMTifv2vzaGgfUXuHEQCSggEA4KrVxTy79QT7jtXiDwSwWi2YwbQAoLV+KOLu\nVKDcrM+KFofdyq9uX4vTbuXlHScBYyVQcUHvISMhhOip3eML3w7VHwllH44MAGnJDjJTndQ1dYTv\nm8H0ZaBKqdeBKcBVfTz8e6VUMbAJ+KrWut80eFlZKdjttv4ejhp38P+z6ozo3dzhw+1Oj12DREzJ\nv70YjkBE/fFTta1k56ThqjaO5WSldvs+FRdlsOuQkRiuKC/dlO+a6QFAa71aKbUE+ItSanHESf5b\nwNNALfAYcAPwSH/vUxelnXFDlRrcun3oeC1VVeYv1xLjj9udLv/2YlgqznSNeHd4fOw5cJrK6hYA\nvB5vt+9TbkZEKhq/f8TftYECh2mrgJRSy5VSUwG01jsxgk3oAhqt9Z+01me01l5gA7DQrLaYITcz\nCafDSkXwH08IIQbTFlzxkxxc8rlpz6nwsFDkEBBAUW5q+LZZQ0BmLgNdB3weQCmVD6QB1cH7mUqp\nZ5RSoW1u64G9JrZlzFktFgqzUzlV0xouJi+EEANpC074rltcSEaKgxfeKqel3VgN1CsA5HRlI47H\nAPB7IE8ptRF4Evg0cItS6jqtdQPGVf+bSqnXgCoGGP4Zr/KykvH6/NQ3SaUwIUR3D798mLse2kl1\nRMaA0Jp/96Rkls5x4/UFKD1lDO24egSAmZMzyclwYbdZemUmHitmrgJqA24a4PG7gbvN+vxoCFUR\nq6pvIzvDnH8gIUR8eupNI2/YW7qKS8+eBkBbsJ5IstPOtHxjbH7bgTMAJDm7n47tNis/+PgqmlrN\n22skO4FHIZQu4kydpIQQQnTpiFzuGXF+CA0BJbvsTHWndXtNkqP3Kke7zUpWeu/ytGNFsoGOQihB\nXH9F5IUQiamhtSt1Q2VtK2/sO832g1W0BgtKpSU7yM/unl+s5xBQNEgAGIUZRRmkuOzsOFzFTRfP\nxmIxZ7eeECK+RObuOV3byr2P7w/fn56fzoyiDCJPF+kpDrIzzLvS748MAY2C3WblrOIsahs7OHKy\nkVd2VhCQFUFCJLzIAFDXY5HI/JJsrFZLtwvGOz+6Eps1+qdj6QGM0uTcVN7SVXz/z28BkJ7iZNkc\n9yCvEkJMZA3BADAtL42yM92HiENDxwBffN9STla3mF74pT/SAxilyT0mcmRCWAgR6gEsmZ3b67GC\niPX9Z03P4sLlU6LWrp4kAIzS9ILu26yb2zr7eaYQIlGEAoCaOqnb8ctWTmNGH/VGYkUCwCjlTUpm\n3eLC8P3KcZazSAgRfaEAEDlCcNHyKbz7/FmmpXYeCQkAY2C5ygvfrqyVACBEomto9WCxGMs9ncFK\ngivm5g3yquiTSeAxEDkMdKauzSjgIEtChUhYjc0eMlKcWK0WvnjTUs7UtjGnx3DQeCA9gDGQkeLk\n17evZfkcNx6v5AYSItE1tHrISDVW9swsymTVgoIYt6hvEgDGSEqSI5y+9WSNpIgWIlG1dXjp8PiY\nlBb9jV3DJQFgDIWGgkqDRZ+FEImnNljrNxY7e4dLAsAYmjk5E4AjEgCESFg1jcYQcDxkCJYAMIYy\nU51kZ7goq5QygUIkqtqmYA/AxCyeY0UCwBgryk2lvtlDa7tsCBMiEdVKDyBxFeUEJ4KrZT+AEIko\ntAlsUlps8vsMhwSAMTY1z9j5d7C8Pnys0+vjpBSPFyIhhAJAeowSvA2HaRvBlFIpwANAPpAE3Km1\nfiLi8YuA7wM+YIPW+k6z2hJNS2bnYrdZ2Ly/kivOmQ7AX587yKu7TvHlm5aipmXFuIVCCDM1tXqw\nWS2kJo3/fbZm9gCuBrZprdcD7wZ+1uPxXwI3AGuAS5RS80xsS9SkJjlQUydx4kxz+Erg1V2nANh1\npCaWTRNCREFjq4f0FEdcFIgyLQBorR/SWv84eHcqUB56TCk1A6jVWp/QWvuBDcCFZrUl2kJX+fqE\nMQwUGguUHcJCTHyNLZ3hXcDjnel9FKXU68AU4KqIwwVAVcT9M8DMgd4nKysFuz36NTNHYsWCQv71\n6lFO17fjdqeTnZlMfbOHhtZOktOSCAQCcTE+KAbndqcP/iSRMNo9Xjo6feRkJsfFd8P0AKC1Xq2U\nWgL8RSm1WGvdV83EQftKdXGUZjkjWNxZH6uhqqqJlmCNgLeP1fK+b2zA5bDx28+ti4suouif251O\nVZXs+RBdGpqNXr7dahk3342BApFpQ0BKqeVKqakAWuudGMEmVCvxJEYvIGRy8NiEkJJkxz0pibLK\nZo6cbKC6vnuVsI5OH5VSOUyICafD6wfA6YiPBZZmtnId8HkApVQ+kAZUA2itjwEZSqlipZQdY3jo\nWRPbEnXT8tNpbuvke396C5+/d6dn71GZEBZiovF4fAC4HPExXG1mAPg9kKeU2gg8CXwauEUpdV3w\n8U8CfwM2Ag9prQ+a2Jaom5bfvdu1ZFYuX//Acj529TxsVgvPbTtBINDXaJgQIh60dXjZ8nYl1fVt\nfP3eN9FldXR4jQDgjJMAYNocgNa6DbhpgMdfBVaZ9fmxNj2/e7H4ecVZzJycyczJmWw7cIYdh6pp\nbPGQGQcpY4UQvT388hFe3lGB3WbF6/Pzowd38MX3LgEmcA9AKeUKje2L/k3v0QOILAgRqhMqu4OF\niF+huT2vzx8+1u4J9QAm0ByAUuqrSqn/Du7u3QE8opSaEDt3zRJ5Zf+9j60kNckRvl+UkwLAyZr4\nWdkkhOhuao9ePsCx08bKn4nWA7ga+DVwI/C41nolxg5eMYC8rGQAstO7ZwWcEuwBHD89PpaJCSGG\nz9XHvqSDwc2fzjjZszTUOYBOrXVAKXU5cHfwWHz8hDH0rQ++g5b2TlzO7r+qotxUkl02DlU0xKhl\nQojR8vexiCMUAHr+zY9XQ+0B1CulngTO0lq/oZS6CvAP9qJEZ+wHSO513Gq1MHNyJpW1rTS2emLQ\nMiHEaIVWdy+amcNtNyzCarEQCglO+wSaA8BYzXMvcFHwfjvwQVNalCBmB8tHHi6XXoAQ8Si0jPvK\nVdNZMjuXye7U8GMTbQ7ADVRprauUUh8D3gekDvIaMYBZUyYBXV1GIUR8CQ0BWYMpXaYXdK38i5d9\nAEMNAPcDHqXUUuCjwD8x0jmLEZo1OYMUl53Nb1fi88tomhDxJhD8sw3l9CqJCACuibQMFAhorbcC\n1wG/1lpvYAgJ3ET/HHYbK+bm0dDsoayyOdbNEUIMU7gHEDyLFhdmhB/L7WPubzwaagBIU0q9A3gX\n8LRSygVIaatRmlFkfGFOnJEAIES8CQUAS/BauLggnevWlvDND66YcHMAd2FMAv9Ba10F3AE8aFaj\nEkWofvDxyqZueYHqmjpkbkCIcS40BGS1GgHAYrFw9ZoSSiJ6AuPdkAJAsLrXEuDPSqks4Gta67vM\nbdrEN8WdSorLzkvbK7j1Ry9xJLgv4Dv3b+GHf91ObWM7YKw2OHqysc91x0KI2PATmgSOcUNGYaip\nINYopY4AB4BDwNtKqRWmtiwBOOw2LloxJXz/7kd2EwgEaGw1CsiUV7Ww63A19214m//90zaeeP1Y\njFoqhOgpENwIEM+FnYY6BPQD4BqtdZ7WOhdjGWjPIu9iBBbPyg3fbm7r5JWdXXVxyiqbuPuR3by2\n5zRAt8eEELEV2ghmjeMuwFADgE9rvTd0R2u9A/Ca06TEMj0/newMFzkZRvK4F7aXhx/bvL+y23Nb\n2+VXLsR4EZ4Ejt/z/5BzAfmVUjcAzwXvXwb4zGlSYrFaLfzoE6vw+QJ85hevUlHVlSK6oke66I5O\nH51eP4442WYuxEQWGgKyxnEEGOqZ5BPAx4BjQClGGoiPm9SmhGOzWnE6bMwO7g4Go4JYXyqqZcmo\nEONBaAgojs//A/cAguUcQ0tPLMC+4O0M4AGMur9ijKxfUsTbx+sAuOG8mWRluNiyv5KbL5nDgeN1\nvLrrFMdON1FcED/LzISYqAKB+O8BDDYE9I3RvLlS6sfA2uDn/EBr/a+Ix44BJ+gaSrpZa10xms+L\nd8vmuMO3czOS+MAlivdfPAeLxUJhdiqv7jpFmdQQEGJc6NoJPEEDgNb6lZG+sVLqfGCB1nqVUioH\no5LYv3o87XKttYxpBNltVr7w3iVUN7SH84mHlphNdqdit1nCFYeEELHVNQQ0QQPAKL0KbAnergdS\nlVI2rbVMHg9gXnF2n8ftNiuT3WmUVzXj9fmx22QiWIhY6hoCinFDRsG0ABA80YeWsdwKbOjj5P97\npVQxsAn4qtZatroOoLggneOnmzhZ3cK0HkXnhRDR5Z8AG8HM7AEAoJS6BiMAXNLjoW8BTwO1wGPA\nDcAj/b1PVlYK9jips2mWBbPcvLLzJDUtnSx39w4AgUAgrr+M8cjdx7+DSAwOh3H6zHOnk5rsiHFr\nRsbUAKCUuhT4OnCZ1rpb6Sut9Z8inrcBWMgAAaCurtWsZsYNd7oTgKdeK2VJSVa3k/3DLx1mmz7D\nHR8+m2SX6XFdYJz8q6pkTiZRtXcYKVtqa5tpdY7fv7mBLlJMG0hWSmUCPwGu0lrX9nxMKfWMUsoZ\nPLQe2NvzPUR3U/PSWDwzh8MVDWx48zi7j1Tz28f2Ut/cwVOby6iqb+fx147FuplCJISuncDx2+s2\nM2y9B8gF/qGUCh17EdijtX40eNX/plKqDWOFUL9X/8JgsVhYOsfNriM1/POVo+HjXq8xKez1+Xl6\nSxlpKQ6uOGd6DFsqxMQXSs47kfcBjJjW+h7gngEevxu426zPn6hmT8nsdeztsjq8Pj+T0pzUN3t4\nZWfFhAsAre1eztS3yiY4MW50TQLHuCGjIGsJ40xBdkqvYx0eY3HVopk5LJvjpqq+nTMTbM7kD//Z\nx3cf2BaumSBErAUmwEYwCQBxZqDxxpyMJOaXGPsI9pXW9vu8eLTnaE23/wsRa/4JMAQkASAOffmm\npZwzP58rV01nVsSQUGFOalcAOFYXq+aZIjczCeidIVWIWPEHAnE9/ANR2Acgxp6aloWalgVAZW0r\nX73nTQAKc1PJm5RMVrqLIxUNE2pfQF5WMtUN7eiy+gn1c4n4FQgE4vrqH6QHEPfyspLDt/ODt0sK\nM2ho8fDctvL+XhZ3QhNuzW2dlJ6Stfci9vz++F4CChIA4p7FYuFL71vKp65dEM4PdNZ0o3fw702l\n4YmqeOfx+sO3D5fXx7AlQhj8gQDWOD+DxnnzBcDc6VmsmJsXvn/e0iIKc1Jo6/BS09Aew5aNztOb\ny3j4pcMAeDq70kgdOdkYqyYJESZDQGJcslmtrF1UBMDhk/G7bPIfLx3mqc1ltHV48Xj9ZKY5SU9x\ncDSOfyYxccgQkBi3QquDjpTH/9Vy6alGPJ0+XHYbM4syqWnsoK6pI9bNEgkuQCCuU0GDBIAJa3p+\nOnabhcMTYOPU4fIGOr1+nA5rOLA98NSB8AY4IWLB74//1WgSACYoh93KrMmZHK9siturZVvw8mr/\n8To6Ov047DbOW1JEfnYKe47W8PxbJ2LcQpHI/IH43gUMEgAmtOXKmBjeebia8qrmuLtiTgqWxTxc\n3oDX58flsJKS5OArNy8D4MDxibXZTcSXwATYCCYBYAKbV2wsB31150m+9f+28NvHBs+47fcHOHii\nHp/fP+hzzeYNrv0Ppd11OoyAkJnqZHJuKoeCgUGIWPD7ZRWQGMfys1NITbJzvNLYODVYHh1Pp4/7\nNrzND/+6nd8+GvvyDL4eJ3eHvevrOnd6Fh6vn6OyJFTESCAQ33mAQALAhGa1WJgzdVK3Y2WV/e+i\nfWxjKa/vPQ3AjkPVMR0yCgQCeH0Bphd0VTNyRpQEnRtMhSHDQCJWJkIuIAkAE9ySWbnd7t9x/1Yq\na/tOFV1e1dzt/tFTsbu6Dg37pESUt1TTJvW6/dimUprbOqPbOCEIbgSTSWAxnp09L5+LV0zlA5fM\nCR/bfaTvoaCi3NRu9w/FMOWC12cEAJvNwqevW8C5iwpZvaAg/HhasoPCHKM2wmMbj/b5HkKYyR+Q\njWBinHM5bLzvotmcv2wKl58zDej/xB666l6z0DjRHi6P3R6C0Pi/3WplucrjI1ecFc51FPKRK88C\n4G0ZBhIxYEwCx7oVoyMBIIG8a/1MstJdHDxR32eSuM5gwrUrzplOfnYKhysaYrYaKLQCyG7r/y9s\nZlEmC0qyOVXTSkNzfO51EPFLhoAGoZT6sVLqDaXUVqXU9T0eu0gptSX4+DfNbIcwWIKTwo2tnfzw\nr9v52UM7u53gQwnXnHYb84qzaPf4YtYL8IWHgAb+iobmAvQJyRAqossfAAsSAPqklDofWKC1XgVc\nBvyix1N+CdwArAEuUUrNM6stoksoVfSh8gb2ltaGV/1AV8plh8PK4pnG5PGuw7Epwdg1BDTwH1io\nMI4u6x4ANu46yb2P76ehxWNOA0XCC0g66AG9CtwYvF0PpCqlbABKqRlArdb6hNbaD2wALjSxLSJo\n4Yycbvf3Hu2qHezpNE66LrsNNW0SdpslZuProSEg2wBDQADFBek4HdZuPQB/IMD9Tx3gjX2n+eyv\nNlEvw0PCBP4JUJnOtJKQWmsfECrgeiuwIXgMoACoinj6GWDmQO+XlZWCPWIduBgZtzud7AwXtY3G\nSfFQRQO5uWnGFzn4ZS4qzMRqtTC3OJt9R2tISnWRnuKMajtbvUYASEt14XanD/jceSU57DxYhdVp\nJyczmcM9hoNe3HGSj1+/yJR2DtY2MXEFAuBy2uL6O2B6TWCl1DUYAeCSAZ42aBitq+t77boYvq+9\nfzlPbS7jdE0L+47VsUdXUpiTSnOrB7vNSk2NsR9gVmEGe4/U8Nr2cpYrd1TbWFVttKHT46OqauAS\nkAuLs9h5sIoPffdZ/vv6hTS3d98X8MRrpSyfndttU9lYcLvTB22bmJj2Hq2h0+unvqlj3H8HBgpQ\nZk8CXwp8Hbhcax05m3gSoxcQMjl4TERBdkYSN188h+XBKmIHguPnnV4fzh7pFgD2H6/t/SYm8wYn\npwcbAgJYu7goPLT1wNMHqKgyOp5fet9SFszIBmD7wap+Xy/EcP3pGQ3Ambq2GLdkdMycBM4EfgJc\npbXudgbRWh8DMpRSxUopO3AV8KxZbRF9C00I7ys1/nk8nUbO/ZAZRRkku+zsPlwd9drCoVVAAy0D\nDbHbrHz23Yu5fOU0mlo7eXarkSa6MCeFT16zAJvV0u/mNyFGoiC4CTHemTkE9B4gF/iHUip07EVg\nj9b6UeCTwN+Cxx/SWh80sS2iD/lZKeRnJbPvWC1enx+P1xfOuAnGiXXRzBw276/kxJlmpuVHb6wz\ntArINoxlFstVHk9tLgMg2WUnI9WJxWJBTZvE/mN11DV1kJXuMqW9IrGEUpTc9i5z5paixcxJ4HuA\newZ4/FVglVmfL4Zm4cwcnt9WzsET9Xg6/aQlO7o9vnR2Lpv3V/L0ljL+6+r5UWvXUDaC9VQcMcY/\nLS8tvEJj8cxc9h+rY8/RGtYtLhrbhoqE1B5MlKh6JFuMN3G+ilWMVmi9/+4jNXi8/m49AIAFJTkk\nu+y8ua8yqktCwxvBhtEDsFotrF9inODnlWSHjy+aZcwP7DxUPYYtFIkslCnX5YjvlYkSABLcnKmZ\nOO1Wdhyqwuvzk+zs/oVOSbLzgUuNRHLRPIGGCr0MZRI40s0Xz+ET18znsrOnho/lZ6VQlJvK3tJa\n2jq8Y9pOkZjaO304HVZJBSHim8NuY860SVTVtwOQmdZ7jHz5nDxcDhvPbTvB3Q/vYsObx01vly88\nBDS8r6jdZuXss/Jx9NgzcvbcPLw+P7sOSy9A9Ob3Bzh+uimcEHEwHR4fSXF+9Q8SAASwoLhruCQz\nrfeGL4fdSkG2seph15EaHnl67fy3AAAddklEQVT5SK/aAWMt3AMYoyusxcG6CHtLo7+kVYx/Ww5U\n8p0HtvKLf+wa0vM7On24nBIAxAQwPyI9RGZq36tkLl05tdv91/acMrVNoQDgGGYPoD9T89PISHGw\nr7Q26ktaxfjX2GJsHtxbWktr++AFhto9PlwO0/fRmk4CgKAoJyW8PDIzte+UDyvPyufu287l9hsX\nY7dZTV9XHyoIY7ePzVfUarEwvySbhhYP5VUtg79AJBS/v+uiYN+xgRc7BAIBPJ0+kqQHICYCi8XC\n/OAw0KQ+hoBCz0lPcbJoZk44B/+ZevN2QYZqEwxnGehgFpQYPZ1Nu83tvYj4E5kWfc8AFzdHKhqo\nrGvD5w/IEJCYOK5dW8K7zpvJ7CGsa1400ziRDvSHMlqhIaDhTgIPZMVcN7mZSby0o1xWA4luQsuO\nAfaU1vQ5TFh6qpHv/fktvnbPmwC9VszFIwkAAjDyA11xznSsQ0hvG8q7s+uIeStqzAgADruNNQsL\n8foC7DkqqSFEl1DuqZyMJBqaPZw403uRw+ma7gkp333BrKi0zUwSAMSw5WQmMcWdyoHj9aZdSYfm\nAMZqEjhk2Rwjq6kkhxORQj2AJbON1WJ9XSA0tnYvLpSbmWx+w0wmAUCMyAplrKt/8LmDQ147PRzh\nHoB9bDfaTHGnkpuZxO4jNeF5BiFC+04Wz8zBAuw52nu5cF1TV2Gh0IVEvJMAIEZk3ZIikl12Xtt7\nmn+8eJgv/e71PrvNI9VpwhAQGJPZy+a4aff4YlbtTIw/oR5AZpqL4sIMDpc39FoOGqosd9sNi7j1\nyrOi3kYzSAAQIzIpzcWX3rcUC/Ds1hNUN7Rz34a3x+z9vd6x3QcQKXT19vTm491Wf4jEFZoDsNss\nLJ6Vgz8Q4DeP7u12UVPf7MECLJyZTbIr/vcAgAQAMQrTC9JZESwqA1BR1Uyn1zfAK4bOjEngkNlT\nMpmen86Bsnp+9Ncdpi5nFfGhK/mghSXBXeNvH6/j2/dtCT+npb2TlCT7sBIUjncT5ycRMXHlqunh\n215fgG166JOrnV4/Ow9X9zkW3zmMgjDDZbFY+Mz1C5kzJZPDFQ384M9v0djiGfyFYsIK9QRtVitT\n89K6PRYa+mlt906YK/8QCQBiVKblp/P+S+Zw43kzAdi8v3LIr91+sIpfPrKb//3TNg6XN3TrPfjC\nk8DmfEVzMpP40k3LuPTsqTS0eHhz32lTPkfEh9AksM1mwWKx8M41xeHHQivGWju8pCRJABCimwuW\nTeGyldMozElh95Eanto8tGyhoWV1J8408/2/vMXPHupKxGXWJHAkq9XCZSunY0GWhSa6cOqR4Pft\nmnNL+OmnVgPw/DZj42CHxxeuBDZRSAAQY8JisfDJaxaQmebkX68cpal18CGVnqtH9Yl6DpUbBerN\nnASOlJnqZNaUTA6VN8gwUALz9cg+a7FYyM5I4vxlkzld28qL28sBSEly9Pse8cjUvy6l1AKl1BGl\n1Gf6eOyYUmqjUurl4H+TzWyLMN+UvDQufcc0fP4AO4ZQPCY00Rvp+W3lwccCWC2WqBTcWD7HTQB4\n4a1y0z9LjE/hIaAe37crzzF6iKHvZbIr/tM/RDItACilUoFfAS8M8LTLtdbnBf+rMKstInqWK2OJ\n5VDSRYcCwK1XnsWdH11J3qRkdh+pocPjo9PnH/NNYP1Zu7iISWlOntlaFi71JxJL5BxApOyMJOYV\nZ9EQ7B2muKQHMFQdwBXASRM/Q4wz7knJLCjJ5lB5AzsOVvHnZ3S/+dVDAcA9KZnJuamcMz+fjk4f\nj79+DK/Pb/rwT0iyy86ahYV4Ov2SIyhBeX1+LNBnLqzzlk4J3+7so9caz0yb0dBaewGvUmqgp/1e\nKVUMbAK+qrXuN6dAVlYKdvvE6n5NVJetLmFvaS2/+tceALwB+NIHVvR6ntNpXE3l5qTidqdzy9UL\neHX3qXDJyUnpLtzu9Ki0+eJzinnyjePsLq3l8rUzh/y6aLVvvGnr8PK/923mXRfMZqnKG/wF45zV\nasVms5KXl9Hrscvc6Rw53cTTbxxjxpRJE+rfPJZT2t8CngZqgceAG4BH+ntyXV1rfw+JcWZmfhpO\nhxVPp3G19Pruk5w81YCjx5LOxmajDnFzUztVVU0AXPqOqTz04mEA6ps6wsfNlu60kpeVzJZ9pzly\nvIaMlL7rIkRyu9Oj1r7xZv+xWnYfrmb34Wru+8oFsW7OsAQCASw9rvTbO7zYrJZ+/z1vXFfC/OmT\nmDMlM+7+zQcKWDFbBaS1/pPW+kywp7ABWBirtoix5XLawrspwRhf3dlHMfbQ0jtbxFDPJe+Yygcv\nG7DXaAqLxcKFy6fg8fq5/ZebeGsYG9oSUeRk6b5j8VFnubaxnW/+cTM//ftO/IEANQ3t7A6mNPf5\n/QPWnw4VTXJMsFGImAQApVSmUuoZpVToMms9sDcWbRHmuHbtDFJcdmYUGV3qjbt7TwV11f3t+sOz\nWCysW1zELZcqPnXtgug0Nmjd4qLw7d88uieqnx1vvBElFB987iBen5/K2laOn4791fEzW8p4eUfv\nNSWv7DxJRXULbx+vY8fBau59fB+/eHg3Ow9V4/UFTNl1Pt6ZNgSklFoO3AUUA51KqXcB/wFKtdaP\nKqU2AG8qpdqAHQww/CPiT0F2Cj/7zBrsdis//Mt29h2tpbK2lfzslPBz+sv3Y7FYOG9p9FcFuxw2\nLloxJbzk71RNC4U5qVFvRzyIrKB1qqaVrQfO8O+NpZypb+PT1y0MrwaLtj1Ha8JDiFPz0pg5OTP8\n2LGI4PTSjnIOljcA8OzWMqMHEKVFB+OJmZPAbwHnDfD43cDdZn2+iD2nw+guX7RiCocrGnhu2wne\nf0nX8E7P3ZfjwU0XzaGkIIN7n9jP1+/dzDXnlnDNuSWxbta4EyqifuGyKby4o5xnNpeFk+q98NaJ\nUQWAqvo2dh6q5sLlU4a9D6SiqiV8+8XtFT0CQCO5mUnkZiaxP6Lw+4EyY/NhbmbSiNscr8bPX56Y\nsJYrNzkZLjbtOUVLxJJQrwmF38fC0jld8xf/3lTK4YqGGLZmfAolT8vLSmbhjBzKItImHyirH1WG\n1Xse38ffXjjEK7uGv4I8cnPhWwfPhCvWdXr9NLV2kpeVzHsumB1+TklhBqH54KGUQ51oJAAI09ms\nVi5cPhVPp59Xdnb9UXflYB9fX8Mkp533Xth1knh15/jYynKovJ5v/HEzb4yDxHWRG6fOjxium5Rm\nTOu9tnvwjYD9CV3Fv6XPjLhdc6dNwtPpZ1vwPZrbjAuP9BQn0wvSue8rF/C9j63kKzcvY+0iY+4n\nEdOCj6+/PDFhrVtciMtp44W3ysNXaV09gPH3NbzkHVO590vnkZuZxNYDZ2j3mFP7eDj+/sJhTla3\ncO/j+8MpigEaWzzUNrZHtS2R+fMXzcwJH1+9oJAkp43X9p4KDxMNVafXx0//voP24G7st4/Xdfs5\nhyL03VobnNC/f8MBvn7vm7y+1whIacldO3kLc1Jx2K3dAliiGX9/eWJCSklysHZhIXVNHWzcfQqf\n34/XH718PyNhs1pZvaCAjk7fuFgW2tzWlazu2a0nCAQCfOeBrdz+q0184bev85EfvshDLx6KSlu8\nEfnzLRYLl549FYC50ydx9ln51DZ2sP/48JaHlle1hMfmrRYLgQDD7u2EegD5WSnML84CjEnqf75y\nFID0lN6pHKYXpHP5OdO4JQbLj2NNAoCImotWGFvq//yM5s/PaLxe/7gb/+9pzcJCYGi5jczW6fWT\nle4iM9XJ05vL+PsLh3stu3xmy4moLMX090ie9u7zZ/HdW89mQUkO5y4yfmebhjkM1NrR1cv68SdX\nYbdZeG3PaQI908YOoGtlmYXPXL+IKe7uq7jS+9ngd+N5szhvSeL1BCQAiKjJy0oJrw55ddcpmlo9\n43L4J5J7UjJnTc/iQFk9P/zLW31mMI2WTq+fFJedW686C6fDynPbToQfi9xlHUpdPFJ+f4CK6pYB\nn9MzeZrFYmGK26ikNbMog8KcFLYfrBpSWvCQtnYjANx00WyyM5JYMtvNyeoWjp5qHPJ7RGb1dDlt\nfPX9y7nthkXhxydaPv/RGt9/fWLC+fDlZ7FyXj4ANY0d474HAHBFsOzlwfIGNrzRvdjNvtLaEU1W\njoSRIdXKgpIcbrm0a7jithsW8evb1/G7z60nNzOJzfsru622Gq57Ht/HN/+4ecAr+Mg5gJ4sFgvr\nFxfh9QXYOIxeQKjNoapb64Pj+E++fnzIvQBfj70lyS47S2bnsqAkG4D87OQhtycRSAAQUZWSZOeW\nS1X4Ssw3zInCWJhfnM0PP34OSU4bL+2soK3Dy8bdJ7n95y9z10M7+c2je2kY5mTlSHR6/eEr/RUq\njxlFGaxZUMCimTk47FZcThvnLZ2Mx+vn+W3lwxo6ibTlbSOgPbu1rN/36LrS7vsUcu6iQpwOK4+8\nfGTI1dZCQ0ChoivzirOYNSWTnYerh7wktL/AdNu7FvHND66guKB3srdEJgFARF2yy86Fy435gJb2\n2K+uGYq8rBTWLCykodnDp3/+KvdvOMCR8q79Ac+bXEzG5/cTCHRVSHM6bHzjlhXcetW8bpPo5y4q\nJNll59+bSnngqQPD/hwjUZpxu7yqhQPH6/p8XmgfQH8T+ClJDtYvNsbU//ysHtLQWWvwuxC6OLBY\nLPzX1fNIS3bw4HMHKR3CUJDX3zu/FBg9gpJCOfn3JAFAxEQsUj2M1nlLivo8PinNmJQ1sxfQGSqR\naR/4TzYjxcntNxpj3q/vPR0uZDJUXl+AQKCr8tVfnz8U/uxI/RVQiXTj+TNZMiuXhmZPt/0f/enq\nAXSN0+dmJvNfV8/D6wvw702lg75HuLRjHAwtjgcSAERMZKW7+MQ18/ncuxfHuilDNtmdxgcvUyyc\nkcMv/2ct933jEu769BquXl2Mzx8Y0c7VoRpqAACYPWUSN188B58/wMZhtqnTa6zBV1OzOH/ZZE5W\nt/Ds1rJezwsNtdgHWMJrt1n54GWKZJctXOQn0lu6itt/uZHy4C7it4NLQHtO1C6YkcOsyZnsOVJD\n5SBp4cPpRfoZmhLdyW9JxMzZZ+WzYEbO4E8cR9Yvmcxn372YtGQH7qxkstJdrFpQQLLLxss7Kkxb\nJRQOAENcNbV6QQEup41ntgyvZ9IRrOHgdFh51/qZJDltPB+xeS9ksDmAkMw0F+sWF9HY4mHrga7J\n8g6Pj988uofG1k7++OR+Sk81crrWOLmnJvdeq3/B8slG3eZtAw+1DaVnIrpIABBilJKcdtYsKKS+\n2cOOQ73rHoyFUClC+xB6AGDMs1y3dgYt7V7+8txBqoeY5iDUA3DabSS77Jy7yJj32NZjpVNoDmAo\nJ9rzl03pVlgd4A//2Re+XVbZzOt7jA1fq+YX4HL0zrm/QuWRk+HilV0nBwxokfsAxOAkAAgxBs5f\nZsxpvNBjMliX1fH8thMDrsjp6PQN2nMYzhBQyHlLikhLdvCWruLb92/ttia/rLKJfaW9d+p6InoA\nABct733yhq4r7aEkUMublMziWbmUnmpkX2ktn/75K70KBL0Q3LsQWhzQk91m5YpVxXR6/Ty1ufeQ\n1EjaJSQACDEmCnNSmV+SzcET9Rw/3cTBE/Xosjp+9OAOHnz+EPc9+TYv7ahAl3VfVdPW4eWLv32d\nL/z2dba8Xdnv+w93CAiMlUJfeO8SMtOctHV4eTK4h2FfaS3fuX8rdz20s9ccgSf4Oc5g5au8rBQW\nz8rl6MlGtkUM4Qx3qOXi4C7w3/97L20dRi/jnWuKufu2c1kxt6umcGFOSp+vBzh3YSHZGS5e2lFB\nXVPfvQCfz9hd3rPko+ibBAAhxsgl7zDy4fzntVJ++Nft/OjBHeHHXtt7mj8/o/nRgzu6JW47eqqR\n5rZOGls8/P7f+/jp33dQ1WO4pq6pI3z1PpweAMC0/HR+/InV5GQk8eL2Co6fbuIP/9lHqD/y8MtH\nOFXTtevX0+nr9Tk3nj8Tu83Kwy8fDg/9DLQRrC9zp2cxZ+qkbst+L3nHVNJTnFy/bgbT8tJYvaCA\n5AF26jrsVt65poROr58n3jjW53O8/sCg8xKii/ymhBgjC0qymZaf1mseYP2Som4pLx7baCxnbOvw\nctffdwKEayjvP1bHl3//RnjC1B8I8J37t4THzIcbAEKvuXZtCV6fn+88sDWcGvnG82bS3NbJ1+/d\nHE52F+4BOLo+pzAnlXMXFlBV3x5+XtccwNDaY7FYuG5tV2GdOz+6MrzhqyA7hTs+cjYfvWreoO+z\nekEBeVnJvLrzZJ/zGj7fwLV9RXcSAIQYIxaLhfdfrMjPSiYno6u61LvPn8XPPrOGn35qNZNzU9m0\n5xS7j9SwP6KY+ocun8u7z58Vvv+7x/bys4d20tTaSWNrZ3jYZCQBAIzJ1cm5XYnR0pIdXLZyGiWF\n6QD85TlNp9cX7gE4exQ/v3TlNCwW2PCGkZYhnAxuGEMtaloWS2fnkpnmJD9rZCkZ7DYr15xbgs8f\n4Kv3vMk/guUfQ3z+xKztO1KmZkZSSi0A/g38XGv96x6PXQR8H/ABG7TWd5rZFiGiYdaUTH7w8VWA\nMXTT0enrGtZIdvBf75zPt+/bwp+fOcD0YFqC/75+IRmpTi5bOY15xVnccf9WAPaW1vJSj8Ruw5kD\niGS1WvjENfPZeuAMyS47C2fkYLFY+OL7lvK35w+xcfcpXt5xMrwLOLIHAEZ65RUqj60HzrDnaM2I\nl1t+8toF+HyBUSUBXHlWPi9uL+dIRSNPbylj+8Eq7vzoShx2K15fYtb2HSnTflNKqVTgV8AL/Tzl\nl8ANwBrgEqXU4P0/IeJIVrqLguzuk5pT89K4YNlkaho72H6wCofdyvxgojIwxuzv+8oFfPjyuQA8\n3WPFy1CXgfZlsjuNa9fO4NKzp1EU7A0kOe3ccN5MXA4bf3vhEA8+b9QT6NkDALhqdTEW4F+vHg1v\nuBrucIvdZuQsGg2r1cKXb1rGey4wekxn6tt4Zovxe/L5AzIENAxmhsoO4Aqg11ZEpdQMoFZrfUJr\n7Qc2ABea2BYhxo2bL54TPgFPcafi7GPd+9rFRayclx8ekz9nfj45GUmUmJDMLCPFyeUrp3U71tdQ\n09S8NM6el09ZZXM4wVusJlztNiuXnj2NX/7PWjJSHDzx+jHqmzvw+gLSAxgG035TWmuv1rq/3ScF\nQGSKwDNAoVltEWI8sVgs/PcNC5k1OZPr183s93lXnDM9fHvZbDc/+dRqphekm9KmK1ZNDxfsge75\neCJde25JtzX2sd5xm5bs4Nq1M/B4/Xzu16/R2OKROYBhGC/VEQb9F8vKSsHeR7dUiFhyu0d2Qna7\n0/n55/IHfc7Z8wrYsv80M6Zljfizhup/3recW69dxLa3Kzl3yeQ+h1Lc7nQuXjmNZ9409hTk52WM\neGJ6rFx7wRz+/sKhcG/J5w+Y/ruaKGIVAE5i9AJCJtPHUFGkukGSQAkRbW53OlVV5pZffN+Fszhr\nWiZZyXbTPytk/tRMamua+3384mWTwwGgtrZ5XOy6vf3Gxfz4b8a+i9M1rVH7XcWDgYJhTEK31voY\nkKGUKlZK2YGrgGdj0RYhxrPMVCfrl0weVztbszOS+NDlc7ly1fRxcfIHY6PZH76wnpLCDC4/Z9rg\nLxAAWEZaNWgwSqnlwF1AMdAJVAD/AUq11o8qpdYBPwo+/Z9a658O9H5VVU3jv3SUSCjR6AEIMVpu\nd3q/Udq0ADDWJACI8UYCgIgHAwUAWS8lhBAJSgKAEEIkKAkAQgiRoCQACCFEgpIAIIQQCUoCgBBC\nJCgJAEIIkaDiZh+AEEKIsSU9ACGESFASAIQQIkFJABBCiAQlAUAIIRKUBAAhhEhQEgCEECJBSQAQ\nQogEJQFACCES1HgpCi/EhKKUKgB2AFO11t5Yt0eIvkgAEKIfSqkFwL+Bn2utfx089nPgHCAA/I/W\nems/L/8c8EpUGirECEkAEKIPSqlU4FfACxHH1gOztdarlFJnAfcBq5RStwPnBp+2DzgE/Av4RHRb\nLcTwSAAQom8dwBXAlyOOXQg8BqC1flsplaWUytBa/wL4RehJSqlfA7OAJcB7gb9ErdVCDIMEACH6\nEBy39yqlIg8XAG9F3K8KHmvs8drPACilioG/m9pQIUZBAoAQI2cZ6EGt9Yei1A4hRkSWgQoxdCcx\nrvhDioBTMWqLEKMmAUCIoXsWeBeAUmoZcFJr3RTbJgkxclIQRog+KKWWA3cBxUAnUAFcD3wJWAf4\ngU9rrXfFqo1CjJYEACGESFAyBCSEEAlKAoAQQiQoCQBCCJGgJAAIIUSCkgAghBAJSgKAEEIkKAkA\nwlRKqfOUUptM/oyvKKWuNPMzenzeaqXUjGG+Zr5S6iWllEspFVBKjYs0LIO1RSn1iFLqkmi2SUSP\nBAAR97TWP9RaPxnFj/wwMOQAoJSyYmQE/ZTWusO0Vpnj48BvlVJpsW6IGHvj4ipEJAal1DTgt0AK\nkAZ8TWv9vFJqLvAHwAtkAN/QWj+jlLoDKAGmA5/H2Jn7PLAamAN8W2v9V6XUA8Cm4GP/AZ4BVgLp\nwJVa65NKqY8At2Nk8NwIXKS1DuXwD7XvZWAnsBS4APgv4BbAA7QD7wHOB24EzlZKfRY43NfP1ONH\nvwYo11q/3ePzUoF7gKmAA/iT1vp3Sqkk4P8wdiGXB38vz2mt/xjx2jTgQSAr+NrHtdbfU0rlAfcD\nmYAPY7fyXqXUdzHSWRN8z/drrTsj3s8J/AYjjXU68Det9V1a6xql1BPAR4lIeS0mBukBiGj6HXCX\n1voC4J3AH4PDDwXAN7XWFwK3Ad+LeE0JcL7WOpSGOU1rfQVwK0Zahp7mAQ9orddhnMzfo5TKAH4C\nXBz8jDkDtLFZa71ea+0DkoFLtNbrgWMYJ81Hg+/7ea31iwP8TJEuA57u47NuA+qDbb0A+HJwaOn9\ngENrvRL4NNDXEMzFweesxQiIzcGexg+ADcHg9i3gA8H2tAJrtdZrgEnApT3e738wchudjxE836uU\nWhR87LngzyAmGOkBiGg6H0hXSn07eL8TyMPIqPkTpdT3ACeQG/GaN7XWkflKXg7+/ziQ3cdnVGut\n9/V4zhzguNa6Mnj8n8Bn+2nj6xG3a4ANSik/xtV4X5k/+/uZTkY8ZyrQ1xDVSuABAK11m1JqG7AM\no5DMy8Hjp/uZQ3kN+K5S6h/ABuCPWmu/Umol8LPga18hWJZSKeUDNiqlvMBcuv+OQz/HlGDVM4Ak\njN7AbozfY3EfbRBxTgKAiKYO4HqtdXXkQaXUcxhDDvcF6/A+EfGwp8d7RBZY7ysff88C7BaMnq4/\n4phvgDZ6gm2aAvwUmK+1PqOU+mk/z+/zZxqinom4LMFjg7Y32KbFwCqMIaZtwQylodeHKaXWAB8B\nVmitW5RSj/Tzc3xXa93XY2KCkiEgEU2bgHcDKKVylVKhMeV8jFq6YIyzu8b4c48AM5VSWcH71w3h\nNXkYvYkzSqlsjGGYULv8GOPu0P/PFOkERi+gpzcJDsUE5wOWY1QcO4AxrENwTP/cni8Mrsy5Umv9\nmtb6S0BzsM2vExyuUUqdq5T6P4zf77HgyX86RlH7nr/jyJ/DqpT6WfDnBmMO5lhfvyQR3yQAiGi6\nDbhOKbURY9jixeDxu4A/KaWewTgR1Sql7hqrD9Va12DMK7ymlHoK44Tcs6fQ007gkFJqC8bk6LeB\nDyulzsUYE/+DUur6AX6mSE/Te8wdjKLz6UqpV4Ov+67W+hjGsFCuUuoNjInXjX20VwOfV0ptDE5e\nP6u1Pg58Ezgv+J7fx/jdPgtkBIeSvgbcAXxdKRU5F/IbjHmENzACU73Wujb42EX0PYch4pykgxYJ\nQSn1AeBJrXWtUupzgNJafzxKn23FuLK/qedKoH6ePxlYrbV+OPja7cAntdZvmNzUvtqSA2wGlkrx\nm4lHegAiUaQBLyqlXgGuAP43Wh+stfYDH8BYTz+U4a16jFU4W4A3gKdicfIP+gPG/gU5+U9A0gMQ\nQogEJT0AIYRIUBIAhBAiQUkAEEKIBCUBQAghEpQEACGESFASAIQQIkH9f5QvTmg+VP8sAAAAAElF\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f953c1c49e8>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "emF6CvwbiaYA",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"Проводим обучение"
]
},
{
"metadata": {
"id": "LWeLAbqTJo6u",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Скорость обучениия\n",
"lr = 1e-4"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "dcqPNe_aSRqO",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "68f9767a-ad11-4cec-d754-c6e088c66d5e"
},
"cell_type": "code",
"source": [
"m.fit(lr, 1, metrics=[metrics])"
],
"execution_count": 46,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1eef7e62cebd446f969d54e497ef2a72",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"epoch trn_loss val_loss metrics \n",
" 0 0.474126 0.262786 0.593153 \n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[array([0.26279]), 0.5931527313932908]"
]
},
"metadata": {
"tags": []
},
"execution_count": 46
}
]
},
{
"metadata": {
"id": "vpOgappuxgly",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"lr = 5e-4"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "S-c7s-WIoBBq",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"outputId": "b615bf68-30a9-497f-d3fe-06a2223e9465"
},
"cell_type": "code",
"source": [
"m.fit(lr, 1, cycle_len=1, metrics=[metrics])"
],
"execution_count": 48,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5830b243516242ee861e575388fbad79",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"epoch trn_loss val_loss metrics \n",
" 0 0.089114 0.068779 0.838458 \n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[array([0.06878]), 0.8384582474168423]"
]
},
"metadata": {
"tags": []
},
"execution_count": 48
}
]
},
{
"metadata": {
"id": "XuImpz-nbUlY",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "bb2c1e61-055a-4ede-fafa-48f1dee97ac5"
},
"cell_type": "code",
"source": [
"m.fit(lr, 3, cycle_len=1, cycle_mult=2, metrics=[metrics])"
],
"execution_count": 62,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4db228f30e2f46b58e212649159878ff",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=7), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
""
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"epoch trn_loss val_loss metrics \n",
" 0 0.036491 0.030541 0.911044 \n",
" 25%|██▍ | 563/2265 [00:11<00:34, 49.23it/s, loss=0.153]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 1 0.054836 0.023759 0.927215 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0522]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 2 0.022119 0.01201 0.940577 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0208]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 3 0.055695 0.030047 0.911232 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0519]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 4 0.018734 0.015099 0.955932 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0175]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 5 0.011658 0.009876 0.955649 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0118]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 6 0.010204 0.007927 0.968756 \n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[array([0.00793]), 0.9687561586894821]"
]
},
"metadata": {
"tags": []
},
"execution_count": 62
}
]
},
{
"metadata": {
"id": "_4BuAvPWPoQL",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
},
"outputId": "f6960d16-1c98-4bee-e8b5-2c634c433311"
},
"cell_type": "code",
"source": [
"# График изменения скорости обучения\n",
"m.sched.plot_lr()"
],
"execution_count": 67,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbdbd058828>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "7inCzCv0cPS-",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "4866c53e-3b04-4e79-ac64-429bb94240f0"
},
"cell_type": "code",
"source": [
"# Просчитаем метрику точности предсказаний\n",
"x_t, y_t = m.predict_with_targs()\n",
"metrics(x_t,y_t)"
],
"execution_count": 68,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.968756"
]
},
"metadata": {
"tags": []
},
"execution_count": 68
}
]
},
{
"metadata": {
"id": "E8uYBfOHPodK",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "df9d9538-686f-4707-b28d-558a02422984"
},
"cell_type": "code",
"source": [
"# Получить предсказания тестового набора\n",
"pred_test=m.predict(True)\n",
"pred_test = np.exp(pred_test)-1\n",
"'Ok'"
],
"execution_count": 69,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Ok'"
]
},
"metadata": {
"tags": []
},
"execution_count": 69
}
]
},
{
"metadata": {
"id": "VBMYWe9VRm31",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "656a54b5-3411-4500-d701-137dd005d0a5"
},
"cell_type": "code",
"source": [
"len(pred_test), len(y_test)"
],
"execution_count": 70,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(99, 99)"
]
},
"metadata": {
"tags": []
},
"execution_count": 70
}
]
},
{
"metadata": {
"id": "TItXXK4GQw61",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"outputId": "3b86954f-12e3-4103-86ca-11289faf2f2d"
},
"cell_type": "code",
"source": [
"# Массив предсказаний\n",
"pred_test[:5]"
],
"execution_count": 71,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[7661.0625],\n",
" [7988.944 ],\n",
" [8225.733 ],\n",
" [8696.835 ],\n",
" [8975.946 ]], dtype=float32)"
]
},
"metadata": {
"tags": []
},
"execution_count": 71
}
]
},
{
"metadata": {
"id": "GCATQr3eRbT4",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
},
"outputId": "11eac9df-f1ba-450b-9bd8-c40e870c4f27"
},
"cell_type": "code",
"source": [
"# Массив реальных курсов\n",
"real_test = np.exp(y_test)-1\n",
"real_test[:5]"
],
"execution_count": 72,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 8188.959961\n",
"1 8300.820313\n",
"2 8876.080078\n",
"3 8934.719727\n",
"4 8822.360352\n",
"Name: y_test, dtype: float64"
]
},
"metadata": {
"tags": []
},
"execution_count": 72
}
]
},
{
"metadata": {
"id": "Jx5KjS2adInT",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 320
},
"outputId": "2c88e453-2810-42cb-fd9a-0164839d9db7"
},
"cell_type": "code",
"source": [
"# График предсказаний и реальных курсов\n",
"plt.figure(figsize=(12,5))\n",
"plt.plot(pred_test) # синий график\n",
"plt.plot(real_test) # зелёный график\n",
"plt.show()"
],
"execution_count": 73,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbd37380e80>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "5Gq3Mm-BPoZW",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "8c3575bf-42ab-4e77-c099-7d8a325ccb04"
},
"cell_type": "code",
"source": [
"# Проведём ещё одно обучение\n",
"m.fit(lr, 3, cycle_len=1, cycle_mult=2, metrics=[metrics])"
],
"execution_count": 74,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "01c0ce71fc29427fb49e00edd47a371e",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, description='Epoch', max=7), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
""
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"epoch trn_loss val_loss metrics \n",
" 0 0.009884 0.008031 0.971236 \n",
" 25%|██▍ | 561/2265 [00:10<00:32, 53.12it/s, loss=0.0479]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 1 0.017834 0.011519 0.959174 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0177]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 2 0.009887 0.007198 0.971153 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.00982]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 3 0.029171 0.026031 0.937858 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0323]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 4 0.025634 0.017396 0.951961 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.0235]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 5 0.006764 0.006335 0.97523 \n",
" 0%| | 0/2265 [00:00<?, ?it/s, loss=0.00632]"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
" 6 0.008928 0.006055 0.976004 \n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[array([0.00605]), 0.976003625013132]"
]
},
"metadata": {
"tags": []
},
"execution_count": 74
}
]
},
{
"metadata": {
"id": "TgnFJLWTtrAl",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"# Получим предсказания тестового набора\n",
"pred_test=m.predict(True)\n",
"pred_test = np.exp(pred_test)-1"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "5wN5cHA2ByJi",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 320
},
"outputId": "28aa4b88-155c-499d-867f-4bf9d5caec50"
},
"cell_type": "code",
"source": [
"# График предсказаний и реальных курсов\n",
"plt.figure(figsize=(12,5))\n",
"plt.plot(pred_test) # синий график\n",
"plt.plot(real_test) # зелёный график\n",
"plt.show()"
],
"execution_count": 76,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbd50d3e5f8>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "WYvJHxDkDQdU",
"colab_type": "text"
},
"cell_type": "markdown",
"source": [
"### Анализ результатов"
]
},
{
"metadata": {
"id": "J6b0gY7MFfqL",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "ueVxdFbSGcMe",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "XFxTVi7sIPVz",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "dXv2-YSKJEvR",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment