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

23 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. Файл с обработанными данными сохранить себе на флешку или любым другим способом (файлы с данными в репозитарий НЕ СОХРАНЯЮТСЯ!)

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

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

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