Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

24 KiB

Лабораторная работа №1. Настройка окружения и разведочный анализ данных.

Цель работы

Подготовить структуру проекта и провести разведочный анализ данных. Результаты первой лабораторной работы будут использоваться в дальнейшем цикле работ.

Подготовка

Лабораторные работы проводятся под ОС Ubuntu 22_04. Для работы на домашних компьютерах рекомендуется использовать виртуальную машину. Для этого нужно скачать VM VirtualBox.

Загрузка из готового образа

Можно воспользоваться готовым образом, установленным в лаборатории. Его можно получить в лаборатории.

Для запуска образа - открыть VirtualBox, во вкладке "Инструменты" выбрать "Добавить". В открывшемся окне указать путь до образа.

Пользовать: mainuser
Пароль: user

Создать виртуальную машину самостоятельно

Также, можно развернуть виртуальную машину самостоятельно. Для этого:

  1. Скачать образ Ubuntu (~5Gb)

  2. Запустить VirtualBox, в меню "Инструменты" выбрать пункт "Создать". Задать название создаваемой машины, например "Ubuntu", при необходимости изменить расположение создаваемой машины, выбрать образ ОС, скачанный в п.2.

В следующем окне задать имя пользователя (в лаборатории это mainuser) и задать пароль

В следующем окне указать количество выделяемых для машины ресурсов. Рекомендуется выделить 8Gb памяти и 6 ядер процессора.

В следующем окне выбрать "создать новый виртуальный жесткий диск, выделив на него не не менее 25Gb.

В следующем окне проверить все настройки и нажать кнопку "Готово".

  1. После установки запустить виртуальную машину и установить в нее VS Code Инструкция, а также Git Инструкция

Задание

  1. Создать директорию, в которой будет разрабатываться проект, продумав его структуру
  2. Создать и активировать виртуальное окружение
  3. Установить требуемые библиотеки
  4. Создать и заполнить файл requirements.txt
  5. Создать файл README.md, в который будут записываться все основные этапы работы

  1. Инициализировать git репозитарий
  2. Создать и заполнить файл .gitignore
  3. Сделать первоначальный коммит, содержащий созданные файлы.
  4. Создать на github.com (или любом другом сервисе) удаленное хранилище
  5. Отправить созданные коммиты в удаленное хранилище

  1. Загрузить локально датасет
  2. Провести разведочный анализ данных.
  3. В файл README.md сохранить выводы, полученные в ходе EDA
  4. Закоммитить блокнот с EDA и другие измененные файлы в удаленный репозитарий
  5. Файл с обработанными данными сохранить себе на флешку или любым другим способом (файлы с данными в репозитарий НЕ СОХРАНЯЮТСЯ!)

Методические указания

0

Выбрать датасет для дальнейшей работы:

Кроме того, допускается использовать свой датасет, если он отвечает условиям:

  • Решение задачи классификации или регрессии
  • Табличные данные (не текст, не изображения, не видео,...)
  • Не менее 7 признаков, среди котороых есть и числовые, и категориальные
  • Не менее 300 объектов

1

Создадим основную директорию с проектом. Сделать это нужно в домашней директории ~/ виртуальной машины. На рабочий стол вынесен ярлык к домашней директории (Home). В ней следует создать новую папку, в которой вы будете делать ваш проект, например my_proj. Таким образом, полный путь до вашей папки будет /home/mainuser/my_proj или просто ~/my_proj.

Очень удобно все действия далее по созданию файлов и папок выполнять из терминала VS Code.

Запустите VS Code, выберите пункт "Open folder", выберите созданную директорию с проектом.

Запустите новый терминал Terminal > New Terminal.

Подсказки по основным командам терминала Linux на слайде лекции №2

При выполнении действий в терминале не забывайте проверять, в какой директории находитесь!

Структурируем основную директорию таким образом, чтобы все ключевые этапы, модули и данные находились в своих папках. Это улучшит читаемость проекта и дальнейшее сопровождение.

На данном этапе предлагается создать две директории: data и eda.

В первой будут храниться исходные данные, а также, те, которые могут в дальнейшем возникнуть в ходе создания проекта. В директории eda будут храниться артефакты, связанные с разведочным анализом данных: блокнот с проведенныеми исследованиями и сохраненные графики. Текущая структура должна быть примерно следующей:

my_proj
 |_____ data
 |_____ eda

2

Создавать виртуальное окружение необходимо в корневой директории. Название для папки с виртуальным окружением следует выбирать таким, чтобы было понятно, для какого проекта она создается. Кроме того, чтобы папку сделать скрытой, следует первым символом в названии сделать точку, например .venv_my_proj После создания в корневой директории проекта должна появиться новая папка c venv:

my_proj
 |_____ .venv_my_proj
 |_____ data
 |_____ eda

Далее следует активировать виртуальное окружение в терминале. Если оно активировано правильно, в приглашении перед именем пользователя и текщей директорией в круглых скобках будет выведено название папки с venv:

(.venv_my_proj) andrey@andrey-lenovo:~/iis/my_proj$

3

Перед любой установкой библиотек (и сейчас, и далее, во всем цикле лабораторных) следует еще раз убедиться, что виртуальное окружение активировано (см. предыдущий пункт). Устанавливать библиотеки (пакеты) следует ТОЛЬКО В ВИРТУАЛЬНОЕ ОКРУЖЕНИЕ!

На данном шаге нам точно потребуется установить пакет pandas, matplotlib.

4

Чтобы иметь возможность проект развернуть на другом компьютере, вместе с кодом необходимо передать файл с зависимостями - с теми пакетами, которые необходимы для работы проекта и которые нужно установить. Стандартное название у этого файла requirements.txt - создайте его в корневой директории.

На данном этапе в него нужно записать те пакеты, которые были установлены в предыдущем пункте. Каждый пакет записывается в новой строке. В дальнейшем вам скорее всего нужно будет доустанавливать какие-то другие библиотеки. Не забывайте после каждого pip install обновлять файл requirements.txt.

Хорошей практикой вместе с названием пакета указывать и его версию. Чтобы узнать, какая версия установлена в данный момент в вашем venv можно выполнить команду pip freeze - она выведет все установленные в данный момент пикеты вместе с их версиями.

Плохой практикой является создание файла requirements.txt как результат вывода команды pip freeze. pip freeze выводит все установленные пакеты, даже те, которые подтягиваются в виде зависимостей. Этот список может быть крайне большим и абсолютно излишним. Компактный файл requirements.txt, содержащий только основные требуемые пакеты, позволяет лучше понимать что происходит в вашем проекте.

На данном этапе requirements.txt должен выглядеть примерно так:

pandas==2.2.2
matplotlib==3.9.2

Структура проекта так:

my_proj
 |_____ .venv_my_proj
 |_____ data
 |_____ eda
 |_____ requirements.txt

5

Создайте файл README.md и начните его наполнять - добавьте описание проекта, а также те команды, которые нужно выполнить, чтобы иметь возможность дома развернуть проект и продолжить над ним работу.

Файл README.md является "лицом проекта". Именно его содержание отображается на странице репозитория в github (и других системах). Поэтому его содеражание всегда должно быть актуальным, а структура четкой и понятной. Файл обычно пишется на языке разметки markdown, базовый синтактис которого можно посмотреть здесь

README.md в нашем цилке работ обязательно должен содержать такие разделы:

  • Описание проекта - краткое описание того, какая задача решается
  • Запуск - Как запустить проект. С указанием подробных команд: клонирование проекта из репозитория, переход в склонированную папку с проектом, установка и активация виртуального окружения, установка в окружение всех требуемых библиотек.

Шаги из данного раздела должны быть полностью корректными и актуальными. Это очень сильно пригодится вам самим, когда вы захотите по прошествие времени снова запустить этот проект :)

  • Описание модулей проекта. На текущем этапе - результаты и выводы EDA. В дальнейшем добавится описание сервисов.

Обращу внимание, что файл со временем может не только дополняться, но и изменяться его структура. Но его содержание должно быть актуальным на каждом коммите. Например, сейчас в разделе "Запуск" будут те команды, которые необходимы для воспроизведения ЛР1. После выполнения очередной ЛР в нем должна быть актуальная информацию по запуску проекта из новой ЛР. При этом, откатившись к итоговому коммиту любой из лабораторных работ ожидается увидеть в файле актуальное для этой работы описание.

В дальнейшем команды для запуска будут дополняться или даже полностью меняться. Это нормально.

6

Освежить в памяти работу с git можно, например, тут

Инициализировать репозитарий следует в корневой директории проекта. После инициализации структура проекта должна выглядеть так:

my_proj
 |_____ .venv_my_proj
 |_____ .git
 |_____ data
 |_____ eda
 |_____ README.md
 |_____ requirements.txt

папка .git может не отображаться, убедиться в том что репозитарий создан, можно командой git status

7

Добавить в корень проекта файл .gitignore. Сразу нужно занести в него следующие правила:

  • не должны коммититься текстовые файлы с данными (расширение .csv)
  • не должны коммититься бинарные файлы с расширением .pkl
  • в коммиты не должны попадать папки с виртуальными окружениями - папки, начинающиеся с .venv

8

Добавить созданные файлы в индекс и закоммитить изменения. Пустые папки не коммитятся, на этом этапе нам это и не нужно.

9, 10

Создать удаленный репозитарий, связать его с локальным, запушить коммит(ы).

При создании репозитария обычно дают подсказки, какими командами можно связаться с локальным. Примерно так:

git remote add origin git@github.com:remote_repo_name.git
git branch -M master
git push -u origin master

11

Загрузите в папку ./data ваш датасет. Структура проекта должны быть следующая:

my_proj
 |_____ .venv_my_proj
 |_____ .git
 |_____ data
 |        |___ dataset.csv
 |
 |_____ eda
 |_____ .gitignore
 |_____ README.md
 |_____ requirements.txt

11

Создайте в папке ./eda новый интерактивный блокнот Структура проекта должны быть следующая:

my_proj
 |_____ .venv_my_proj
 |_____ .git
 |_____ data
 |       |___ dataset.csv
 |
 |_____ eda
 |       |___ eda.ipynb
 |
 |_____ .gitignore
 |_____ README.md
 |_____ requirements.txt

12

Выполнить разведочный анализ вашего датасета.

При установке новых библиотек не забывайте обновлять файл requirements.txt

Блокнот нужно структурировать по основынм действиям:

  • Загрузка данных и знакомство с ними -
  • Очистка данных
  • Анализ признаков для модели
  • Сохранение финального датасета
  • Выводы

В загрузке и знакомстве с данными показать основные статистики, сделать выводы о признаках, выделить столбцы с числовыми признаками и категориальными, выделить столбец с целевой переменной. Проверить типы данных каждого столбца и при необходимости откорректировать их.

В очистке данных следует удалить невалидные данные, удалить или восстановить провущенные значения

Раздел "Анализ признаков для модели" должен содержать набор графиков, позволяющих сделать полезные выводы о данных, о зависимости целевой переменной от признаков. Необходимо построить не менее 5 графиков, из которых минимум один должен быть интерактивным.

Каждый график нужно сохранить в виде файла в директорию eda.

Поле каждого графика требуется написать вывод о выявленных зависимостях. Кроме того, на этом этапе могут быть сформированы новые признаки по выявленным закономерностям.

Финальный датасет после очистки следует сохранить. Именно с очищенным датасетом мы будем работать в следующих лабораторных работах. Рекомендуется сохранить его в формате pickle чтобы сохранилась информация о типах данных столбцов

В выводах, следует указать:

  • перечислить все действия, проведенные на этапе очистки данных
  • Создавались ли новые признаки?
  • Какие закономерности выявлены по графикам, которые могут быть полезны в дальнейшем для решния задачи? - можно переписать все выводы, записанные после каждого графика.

13

В файл README.md сохранить выводы, полученные в ходе EDA. Также убедитесь, что в файле содержатся подробные инструкции по запуску проекта.

14

На данном шаге структура проекта должна быть следующая:

my_proj
 |_____ .venv_my_proj
 |_____ .git
 |_____ data
 |       |___ dataset.csv
 |       |___ clean_dataset.pkl
 |
 |_____ eda
 |       |___ eda.ipynb
 |       |___ graph1.png
 |       |___ graph2.png
 |       |___ graphN.png
 |
 |_____ .gitignore
 |_____ README.md
 |_____ requirements.txt

Файлы с данными никогда не коммитятся! Во-первых, они имеют большой размер, во-вторых, они могут содержать чувствительную информацию и должны передаваться другими каналами.

Будьте аккуратны с интерактивными графиками - они могут занимать десятки мегабайт и из-за них может раздуваться размер блокнота. Перед коммитом посмотрите, сколько места занимают графики и Не комитьте графики размером более 10 Мб.

Также, чтобы не раздувать размер блокнота, загружаемого в репозитарий, рекомендуется удалить вывод этих графиков под ячейкой (нажав рядом я ячейкой на кнопку с точками и выбрав clear cell output)

Убедитесь, что файл requirements.txt содержит все библиотеки, используемые в проекте. Это можно сделать, например, пройдясь по инструкциям import в коде.

Закоммитить блокнот с EDA и другие измененные файлы в удаленный репозитарий.

15

Файлы с обработанными данными, а также большие графики, которые не попали в репозитарий сохраните себе на флешку или любым другим способом. Обратите внимание, что с этими данными вы продолжите работать в следующих лабораторных работах. Сохранность файлов на виртуальной машине НЕ ГАРАНТИРУЕТСЯ.

Контрольные вопросы

  1. Для чего нужен и как используется файл requirements.txt
  2. Что такое "виртуальное окружение"
  3. Как установить виртуальное окружение для проекта
  4. Для чего нужен этап разведочного анализа данных? Какие цели на нем решаются?
  5. Какие типы графиков вы знаете и в каких случаях лучше применять тот или иной тип?