Вы не можете выбрать более 25 тем
			Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
		
		
		
		
		
			
		
			
				
	
	
		
			155 строки
		
	
	
		
			15 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			155 строки
		
	
	
		
			15 KiB
		
	
	
	
		
			Markdown
		
	
# Разведочный анализ данных (EDA)
 | 
						|
 | 
						|
## Блокноты Jupyter
 | 
						|
 | 
						|
* `cars_eda` — Очистка и первичный анализ данных о подержанных автомобилях.
 | 
						|
 | 
						|
  Использует CSV-файл сырых данных из [датасета](https://www.kaggle.com/datasets/vijayaadithyanvg/car-price-predictionused-cars/data). Каноническое расположение файла данных: `data/cars.csv`.
 | 
						|
 | 
						|
  Создаёт файлы очищенных данных (по умолчанию — CSV) и аугментированных данных (по умолчанию — pickle). Канонические расположения: соответственно `data/cars.clean.<ext>` и `data/cars.aug.<ext>`, с заменой `<ext>` на расширение в зависимости от формата: `csv` для CSV, `pickle` для pickle.
 | 
						|
 | 
						|
  **Выводы по исследованию**:
 | 
						|
 | 
						|
  * Выполнена очистка датасета: удалены несколько аномальных объектов, переименованы некоторые ошибочно названные признаки. (Пропущенных значений в датасете нет.)
 | 
						|
 | 
						|
  * Датасет дополнен (аугментирован) потенциально полезными синтетическими признаками: отношение цены с пробегом к изначальной цене, возраст (предполагаемый на основе года выпуска автомобиля и распределения этих годов выпуска в датасете), логарифмы количественных величин. Аугментированная версия сохраняется отдельно.
 | 
						|
 | 
						|
  * Предварительно подтверждена возможность определения рыночной цены автомобиля с пробегом по использованным признакам, **в особенности** по следующим: исходная цена, возраст и пробег автомобиля, тип продающего лица (дилер или частное лицо), топливо (автомобили на дизельном топливе редко бывают дешёвыми).
 | 
						|
 | 
						|
    * Цена продажи с пробегом сильно линейно коррелирует с изначальной ценой.
 | 
						|
 | 
						|
    * Интересно, что возраст автомобиля является заметно лучшим предиктором снижения стоимости, чем пробег, при этом корреляция между возрастом и пробегом существенная, но не определяющая.
 | 
						|
 | 
						|
    * Существует огромная разница в ценах у дилеров и частных лиц (у частных лиц дешевле в разы).
 | 
						|
 | 
						|
    * Существует слабая, но заметная прямая корреляция между изначальной ценой автомобиля и пробегом к дате последующей продажи.
 | 
						|
 | 
						|
    * Датасет не очень однороден (у него есть "тяжёлый центр"), и с малым количеством объектов это может создать проблемы с устойчивостью предсказания цен. Рекомендуется применение робастных методов ограниченной сложности; однако прямая линейная регрессия для предсказания цены проодажи может всё-таки оказаться не лучшим методом.
 | 
						|
 | 
						|
  Графические артефакты исследования сохранены в директории `./cars_eda_figures/`.
 | 
						|
 | 
						|
## Установка
 | 
						|
 | 
						|
Для EDA необходимы общие зависимости, см. **Общие зависимости** в `README.md`.
 | 
						|
 | 
						|
Для EDA используется среда [Jupyter](https://jupyter.org/). Т.к. блокноты хранятся в текстовом формате под контролем версий, нужно также дополнение [Jupytext](https://jupytext.readthedocs.io/en/latest/) (как минимум для ручной конвертации блокнотов; см. ниже).
 | 
						|
 | 
						|
Опционально можно использовать дополнение [papermill](https://papermill.readthedocs.io/en/latest/) для простого параметризованного исполнения блокнотов.
 | 
						|
 | 
						|
### Общий порядок
 | 
						|
 | 
						|
**Внимание**: Оптимальный порядок установки и конфигурации Jupyter для работы с проектом неоднозначен. См. обоснование выбранного здесь порядка работы с блокнотами Jupyter и возможные альтернативные варианты в `eda/docs/jupyter_workflow_motivation.md`.
 | 
						|
 | 
						|
1. Выполните установку общих зависимостей, если это ещё не выполнено, см. **Общие зависимости** в `README.md`.
 | 
						|
 | 
						|
2. Jupyter и дополнения должны быть установлены в систему, а НЕ в виртуальное окружение. При необходимости деактивируйте виртуальное окружение.
 | 
						|
 | 
						|
   ```sh
 | 
						|
   deactivate
 | 
						|
   ```
 | 
						|
 | 
						|
3. [Установите Jupyter](https://jupyter.org/install) и Jupytext в систему (НЕ в виртуальное окружение).
 | 
						|
 | 
						|
   ```sh
 | 
						|
   pip install -U notebook
 | 
						|
   ```
 | 
						|
 | 
						|
4. Установите Jupytext в систему (НЕ в виртуальное окружение).
 | 
						|
 | 
						|
   ```sh
 | 
						|
   pip install -U jupytext
 | 
						|
   ```
 | 
						|
 | 
						|
   Полная инструкция по установке: [Installation — Jupytext  documentation](https://jupytext.readthedocs.io/en/latest/install.html).
 | 
						|
 | 
						|
5. **Опционально**, установите papermill в систему (НЕ в виртуальное окружение).
 | 
						|
 | 
						|
   ```sh
 | 
						|
   pip install -U papermill
 | 
						|
   ```
 | 
						|
 | 
						|
   Полная инструкция по установке: [Installation - papermill 2.4.0 documentation](https://papermill.readthedocs.io/en/stable/installation.html).
 | 
						|
 | 
						|
**Шаги 6–7** **необходимо** выполнить **только** если Вы желаете использовать что-то кроме расширения Jupyter для Visual Studio Code для работы с блокнотами **или собираетесь** коммитить писать блокноты под контроль версий.
 | 
						|
 | 
						|
6. Активируйте виртуальное окружение вновь.
 | 
						|
 | 
						|
7. Установите ядро Jupyter, связанное с данным виртуальным окружением, в систему. Используйте следующее имя для ядра: `mpei-iis-99040779`. (*Да, это странно, но это признано лучшим подходом на данный момент; см. обоснование в `docs/dev/jupyter_workflow_motivation.md`.*)
 | 
						|
 | 
						|
   ```sh
 | 
						|
   ipython kernel install --user --name=mpei-iis-99040779
 | 
						|
   ```
 | 
						|
 | 
						|
   (Эта команда устанавливает виртуальное окружение глобально для текущего пользователя; для установки глобально в систему, уберите флаг `--user`).
 | 
						|
 | 
						|
**Внимание**: На данном этапе могут отсутствовать пригодные для прямого редактирования блокноты `.ipynb` (например, если проект развёртывается с нуля). Об использовании спаренных блокнотов и конвертации форматов см. **Использование Jupytext**.
 | 
						|
 | 
						|
#### Удаление ядра из системы
 | 
						|
 | 
						|
Во избежание захламления системы ядро можно удалить из системы **позднее**, вызвав глобально установленный Jupyter (НЕ в виртуальном окружении) и передав имя ядра.
 | 
						|
 | 
						|
```sh
 | 
						|
jupyter kernelspec uninstall mpei-iis-99040779
 | 
						|
```
 | 
						|
 | 
						|
**Примечание**: Установленное ядро НЕ занимает значительные ресурсы хранилища. На самом деле в систему устанавливается крайне лёгкая *спецификация ядра*, ограниченная коротким текстовым файлом и иконками.
 | 
						|
 | 
						|
### Зависимости
 | 
						|
 | 
						|
Используемые непосредственно кодом проекта зависимости для разведочного анализа данных (EDA) (директория `eda/`) — пакеты Python — на данный момент включены в общие зависимости (см. выше).
 | 
						|
 | 
						|
### Использование Jupytext
 | 
						|
 | 
						|
Описанные ниже команды `jupytext` используют глобальной установленный экземпляр Jupytext (однако его можно запускать и изнутри виртуального окружения).
 | 
						|
 | 
						|
Для автоматической синхронизации связанных блокнотов (включая создание блокнотов отсутствующих, но ожидаемых форматов):
 | 
						|
 | 
						|
```sh
 | 
						|
jupytext --sync eda/cars_eda.py
 | 
						|
```
 | 
						|
 | 
						|
Jupytext довольно удобно работает в оригинальной среде Jupyter, синхронизируя изменения связанных файлов на лету при работе в Jupyter, **ориентируясь на метки времени на файлах**. См. документацию [Jupytext](https://jupytext.readthedocs.io/en/latest/index.html).
 | 
						|
 | 
						|
**Внимание**: С расширением Jupyter для Visual Studio Code Jupytext **не работает напрямую**. Для использования блокнотов `.ipynb` с расширением Jupyter для VS Code нужно синхронизировать текстовый файл под контролем версий и файл `.ipynb` вручную указанными выше командами. Однако заметьте, что это же расширение может исполнять блокнот в текстовом формате самостоятельно, посредством автоматизированного ведения временного блокнота; и оно даже автоматически создаёт/подхватывает локальное ядро Jupyter в виртуальном окружении.
 | 
						|
 | 
						|
## Работа с блокнотами Jupyter
 | 
						|
 | 
						|
### Jupyter
 | 
						|
 | 
						|
1. Запустите глобальный глобально установленный сервер Jupyter и приложение (НЕ из виртуального окружения).
 | 
						|
 | 
						|
   * Например, запустите сервер Jupyter и веб-приложение Notebook в браузере:
 | 
						|
 | 
						|
     ```sh
 | 
						|
     jupyter notebook
 | 
						|
     ```
 | 
						|
 | 
						|
      Веб-приложение Notebook должно открыться в веб-браузере автоматически. Если этого не произошло, найдите в сообщениях сервера Jupyter строку примерно следующего содержания:
 | 
						|
 | 
						|
          [I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
 | 
						|
 | 
						|
      Откройте веб-браузер и перейдите по ссылке, выведенной в конце указанного сообщения.
 | 
						|
 | 
						|
   См. также [документацию Jupyter](https://docs.jupyter.org/en/stable/running.html).
 | 
						|
 | 
						|
2. Используйте приложение для навигации по файловой системе (в частности, по каталогу `eda/`), редактирования и исполнения кода в блокнотах.
 | 
						|
 | 
						|
3. Если приложение Jupyter запрашивает **выбор ядра** Jupyter (**kernel**) или Вы сталкиваетесь с необъяснимыми **ошибками импортов**, выберите для текущего блокнота ядро с именем `mpei-iis-99040779` (которое Вы установили в систему раньше).
 | 
						|
 | 
						|
   * **Notebook**: Может понадобиться выбор вручную; кнопка для выбора ядра для открытого блокнота находится в верхнем правом углу веб-страницы.
 | 
						|
 | 
						|
### Расширение Jupyter для Visual Studio Code
 | 
						|
 | 
						|
1. Запустите Visual Studio Code.
 | 
						|
 | 
						|
2. **Если** Вы НЕ установили ядро Jupyter, связанное с виртуальным окружением для проекта, в систему, обязательно откройте корневую директорию проекта в VS Code (*File* -> *Open Folder...*). **Иначе** это необязательный, но удобный шаг.
 | 
						|
 | 
						|
3. Если Вы открыли директорию проекта и VS Code запрашивает выбор автоматически обнаруженного виртуального окружения, согласитесь.
 | 
						|
 | 
						|
4. **При открытии любого блокнота** убедитесь, что выбрано корректное ядро Jupyter. (Кнопка для выбора ядра для открытого блокнота находится в верхнем правом углу области содержимого вкладки; если ядро не выборано, на кнопке написано *Select Kernel*.)
 | 
						|
 | 
						|
  * **Если** Вы установили ядро Jupyter в систему, рекомендуется выбрать установленное в систему ядро с именем `mpei-iis-99040779`.
 | 
						|
  * **Если** Вы совсем **не собираетесь** использовать Jupyter для работы с проектом **и не собираетесь** записывать блокноты под контроль версий, можно выбрать локальное ядро, связанное с виртуальным окружением (по умолчанию имеет название виртуального окружения — `.venv`).
 | 
						|
 | 
						|
5. Используйте IDE с расширением для навигации по файловой системе (в частности, по каталогу `eda/`), редактирования и исполнения кода в блокнотах.
 |