
- •Инструментальные средства разработки инфокоммуникационных систем с искусственным интеллектом
- •ОГЛАВЛЕНИЕ
- •Введение в инструментальные средства разработки ИКС с ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Пример:
- •Кодировка символов
- •в верху файла.
- •IPython notebooks
- •Модули
- •Looking at what a module contains, and its documentation (Глядя на то, что содержит модуль, и его документацию)
- •Переменные и типы Имена символов
- •Присваивание
- •Основные типы
- •Функциональная утилита Type
- •Вывод type
- •Операторы и сравнения
- •Составные типы: строки, список и словари. Текстовые переменные
- •Индексация начинается с 0!
- •Лист
- •Кортежи
- •Словари
- •Услоаные операторы и табуляция Условные операторы: if, elif, else
- •else:
- •Циклы
- •Списки: создание списков с использованием циклов for:
- •while циклы:
- •Функции
- •Аргумент по умолчанию и ключевые слова
- •Безымянные функции (lambda функция)
- •Классы
- •Исключения
- •Дополнительная литература
- •Часть 2. Введение в pandas Цели обучения:
- •Основные понятия
- •Работа с колонками и строками DataFrame
- •Манипулирование данными
- •Решение
- •Indexes
- •Упражнение #2
- •Копирование DataFrame
- •Введение в анализ данных (очистка, интерполяция, экстраполяция)
- •Формирование дата фрейма и интерполяция пропущенны значений
- •Графическое представление обработанного дата фрейма (библ. pyplot)
- •Анализ графика и удаление значений за неполный день
- •Обработка аномалий временного хода и апроксимация Детектирование аномалий
- •Интерполяция
- •Визуализация аномалий
- •Сглаживание временного ряда
- •Анализ временных рядов (регрессия)
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Базовые методы программирования систем ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ:
- •ПРАКТИЧЕСКАЯ ЧАСТЬ.
- •Кластерный анализ
- •Применение нейронных сетей для анализа временных рядов
- •Когнитивные системы связи
ЛАБОРАТОРНАЯ РАБОТА № 2
Введение в анализ данных (очистка, интерполяция, экстраполяция)
Цель работы: изучить методы интерполяции и очистки временных рядов средствами библиотек pandas, statsmodels и sklearn.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Импортирование датасетов и интерполяция пропущенных данных
#@title Импортирование библиотек и монтирование диска
from google.colab import drive # функция монтирования google диска (доступ к папкам) import os # библиотека работы с фаловой системой
import pandas as pd import numpy as np
#import seaborn as sns
#import matplotlib.pyplot as plt
#Монтирование google диска с целью получния доступа к датасетам drive.mount('/content/drive')
#Указываем путь до папки с датасетом максимальной применимой частоты (МПЧ (muf)) dir_path = "/content/drive/My Drive/Colab Notebooks/ai_systems/lw2/muf_data"
#Метод .listdir позволяет получить список файлов в дирректории
directory_files = os.listdir(dir_path)
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
Формирование дата фрейма и интерполяция пропущенны значений
Создадим новый дата фрейм и начнем обработку файлов дата сета в цикле. Интерполяция пропущенных значений файлов выполним путем определения начальной и конечной даты каждого набора данных (файл), затем в данном диапазоне создадим новый набор индексов формата времени с шагом датасета (в данном случае шаг 5 мин (300 сек)). Далее по новому временному диапазону произведем реиндексирование дата фрейма, пропущенные значения определятся как NaN. Операция интерполирования восстановит NaN значения.
df = pd.DataFrame()
for file in directory_files:
#Оператор os.path.join(dir_path, file) соединяет путь до папки с данными с конкретным названием файла,
#с целью формирования полноценного пути до документа дата сета
df_file = pd.read_csv(os.path.join(dir_path, file) , names=['time', 'muf', 'bool'], encoding = 'ISO-8859-1', low_memory=False)
#Метод .drop выполняет удаление колонки или строчки из дата фрейма df_file = df_file.drop('bool', axis=1)
#Ниже код формирования колонки времени дата фрейма формата '%Y-%m-%d %H:%M'
df_file['time'] = pd.to_datetime('2021'+str(file.split('.')[0]) +' '+ df_file['time'].astype(str), format='%Y%j %H:%M:%S').dt.strftime('%Y-%m-%d %H:%M')
#Далее определим начальную и конечную дату start = df_file['time'].min()
stop = df_file['time'].max()
#Создадим и отформатируем новый диапазон дат
31