Привет!
Меня зовут Константин Григорьев, я развиваюсь в направлении Data Science.
Содержание
- Обучаюсь на 3-ем курсе бакалавриата МУИВ. Факультет информационных технологий.
- С октября 2023-го года прохожу обучение в АНО "Школа 21", образовательном проекте от Сбера для разработчиков, бывшем филиале школы 42.
- 2023 Правительство Москвы, Добровольный Квалификационный Экзамен по Data Science.
- 2022 МФТИ, “Быстрый старт в искусственный интеллект” 45 ак. ч.
- 2022 ЧОУВО “МУ ИМ. С. Ю. ВИТТЕ”, “Основы технологического предпринимательства” 24 ак. ч.
- Английский язык, B2
Резюме можно увидеть по ссылке.
- Программирование: Python, C, SQL;
- Базы данных: PostgreSQL, MySQL, SQLite;
- Машинное обучение: Scikit-learn, Tensorflow, PyTorch, CatBoost, XGBoost;
- Визуализация данных: Matplotlib, Seaborn;
- Обработка данных: NumPy, Pandas;
- Веб-разработка: HTML, CSS, Flask;
- Операционные системы: Windows, Linux, MacOS;
- А также: регулярные выражения, Beautiful Soup, Tkinter, Docker, Git, Bash, Excel, SSH, сети.
В основном выполнял проекты, связанные с анализом данных и классическим машинным обучением.
“Students Adaptability ML”
Ссылка на исходный код.
Задачи:
- По имеющимся данным о студентах онлайн-курсов обучить модель предсказания их уровня адаптивности (насколько сложный будет для них курс).
Используемые технологии:
- Python.
- Docker.
- Разведывательный анализ данных.
- Библиотеки анализа данных: NumPy, Pandas, Seaborn.
- Библиотеки ML: Scikit-learn, CatBoost.
- Flask, Gunicorn.
- Ансамблевый метод: стекинг моделей машинного обучения.
Результаты:
- Приложение в виде Docker Image, которое принимает запрос с данными о студенте и возвращает его уровень готовности пройти курс.
- Выполнил полный цикл задачи машинного обучения: проанализировал данные, обучил модель и подготовил для запуска в работу готовое приложение.
Описание:
В проекте изучается датасет, содержащий персональную информацию об онлайн студентах.
Цель состояла в предсказании их уровня адаптации или, другими словами, вероятность успешного прохождения курса.
В Jupyter ноутбуке данные были разделены на тренировочные и тестовые, был проведён анализ характеристик датасета, обучено и сверено по метрике F1 несколько моделей машинного обучения.
Лучшие из моделей были объединены в одну с помощью стекинга (ансамблевый метод).
Финальная стек-модель сохранена в Docker Image.
В конце работы получились следующие файлы:
- Jupyter ноутбук "data_analysis.ipynb" с обширным анализом данных;
- Датасет "students_adaptability_level_online_education.csv";
- Файлы с зависимостями: "Pipfile" и "Pipfile.lock";
- Скрипт "train.py", который обучает финальную модель и сохраняет её в бинарный файл;
- Скрипт веб-сервис "predict.py". Может быть запущен с помощью Gunicorn;
- Бинарный файл "model.bin" с важными переменными натренированной модели;
- Скрипт "predict_test.py" для тестирования веб-сервиса.
- Dockerfile для развёртывания веб-сервиса;
“Анализ данных аэропортов, визуализация и применение машинного обучения для проверки наличия регулярных рейсов”
Ссылка на исходный код и отчёт.
Задачи:
- Провести полный анализ данных 75000 аэропортов.
- Обучить модель предсказания наличия регулярных рейсов у аэропорта по его характеристикам.
Используемые технологии:
- Python, Pandas, NumPy, Matplotlib, Seaborn, Scikit-learn, XGBoost, Jupyter Notebook, Google Earth Pro.
Результаты:
- Произвёл подробный анализ аэропортов и очистил данные.
- Поставил и проверил несколько гипотез, визуализировал статистические срезы.
- Натренировал несколько моделей машинного обучения и выбрал лучшую: алгоритм случайного леса с ROC AUC = 0.80.
Описание:
В проекте исследовался датасет с данными о 75000 аэропортов по всему миру.
Он содержит анализ данных, очистку от цифрового мусора, вывод статистических характеристик и диаграмм, обучение моделей машинного обучения и подбор гиперпараметров.
В приложении Google Earth Pro был импортирован датасет и получено на глобусе мира расположение каждого аэропорта с его описанием.
Также было предложено несколько гипотез о зависимости характеристик и проверено на данных.
После я разделил данные на обучающие и тренировочные, обучил несколько моделей машинного обучения, проверил матрики accuracy, precision, recall и ROC AUC score. Лучшим оказался алгоритм случайного леса. Используя кросс-валидацию данных и отрисовку графиков, я подобрал оптимальные гиперпараметры модели.
После обучения финальной модели сравнил все метрики и сделал вывод о том, что модель случайного леса склонна к переобучению.
Некоторые изображения из отчёта:
“Интерактивное приложение для доступа к ML-моделям с сервера”
Ссылка на исходный код.
Задачи:
- Клиент-серверное приложение с авторизацией.
Используемые технологии:
- Работа с базами данных.
- Система авторизации пользователей.
- Сетевое взаимодействие.
- Python, CustomTkinter, Tkinter, Flask, Requests, Sqlite3.
- SQL.
Результаты:
- Готовое приложение с возможностью авторизации и получения внутренней информации.
- Значительно улучшил навыки разработки бэкенд части приложений на Python.
Описание:
Проект представляет собой клиент-серверное приложение. Сервер может быть запущен исполнением скрипта ./server/server.py.
Графический интерфейс запускается скриптом ./client/main.py.
Пользователя встречает следующее окно регистрации:
После введения данных и нажатия кнопки регистрации происходит передача данных серверу, запись в базу данных пользователей:
В случае успешной записи идёт перенаправление на основное окно:
Здесь человек может выбрать понравившуюся модель из списка и получить описание.
Также реализован вход по логину и паролю:
Есть кнопка переадресации со страницы логина на страницу регистрации и наоборот.
Тема может быть изменена на тёмную или системную при её выборе из списка:
Клиент и сервер показывают в консоли отладочную информацию при различных действиях пользователей:
“Разработка сценариев реализации угроз с использованием MITRE ATT&CK на примере цифровой подстанции. Рассмотрение вопросов автоматизации процесса формирования сценариев угроз”
Ссылка на отчёт.
Задачи:
- Произвести анализ устройства цифровой подстанции.
- Определить программное обеспечение, которое можно применить при формировании модели угроз для данного объекта и сформулировать принцип автоматизации моделирования.
Используемые технологии:
- MITRE ATT&CK, MITRE Navigator, ADTool, правила CAPA, MITRE CARET, Microsoft threat modeling tool, банк данных угроз информационной безопасности ФСТЭК России.
Результаты:
- Получил практические навыки формирования целей и задач группового проекта.
- Написал подробный отчёт по анализу темы.
- Научился формировать сценарии угроз с помощью современных инструментов.
Описание:
Отчёт представляет собой статью с результатами практической работы нашей группы студентов.
В документе описана гипотетическая ситуация:
- Есть автоматизированная цифровая подстанция на электростанции. От неё питается центр обработки данных с большим количеством клиентов, в том числе в лице крупных компаний.
В отчёте исследуется предположительная схема работы ЦПС, её структура обеспечения надёжности. Далее предполагается, какие объекты могут быть атакованы путём кибератаки на саму подстанцию. После с помощью программного обеспечения MITRE ATT&CK и MITRE Navigator и концепции "Kill chain" описываются возможные сценарии атак злоумышленников.
Во втором разделе приведены сервисы для помощи в автоматизации формирования сценариев угроз.
- Реализация оригинальной игры "Понг" на языке C.
- Реализация клеточного автомата "Game Of Life" на языке C.
- Реализация Bash утилит Cat и Grep.
- Реализация библиотеки C string.h с дополнительным функционалом.
- Базовое ознакомление с Linux (Ubuntu Server LTS 20.04).
- Настройка сети на виртуальных машинах с Linux и их взаимодействие.