Coder Social home page Coder Social logo

alekseibogachev / ny-tree-census Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 27.16 MB

Исследовательский анализ датасета 2015 Street Tree Census - Tree Data

Home Page: https://alekseibogachev.github.io/ny-tree-census/

License: MIT License

Dockerfile 0.02% Shell 0.02% Jupyter Notebook 0.32% Python 0.19% HTML 99.12% JavaScript 0.33% CSS 0.01%
dashboards eda quarto shiny

ny-tree-census's Introduction

ny-tree-census

Исследование датасета 2015 Street Tree Census - Tree Data (https://data.cityofnewyork.us/Environment/2015-Street-Tree-Census-Tree-Data/uvpi-gqnh/about_data) и визуализация геоданных.

Проект для домашнего задания курса MLOps и production в DS исследованиях 3.0.

Important

Разработка проекта ведётся по методологии GitHub-flow. Подробенее в CONTRIBUTING.md.

Warning

Проект и документация в стадии разработки.

Краткое описание проекта

Датасет содержит информацию о деревьях, растущих на улицах Нью-Йорка, собранную в рамках проекта 2015 Street Tree Census волонтёрами и сотрудниками NYC Parks & Recreation и партнёрских организаций.

Собранные данные включают в себя информацию о видах деревьев, диаметре ствола и оценку здоровья растения. Доступны сопроводительные данные, показывающие статус сбора и публикации данных по всему городу.

Подробнее о датасете можно узнать на его сайте.

Цель - выполнить исследовательский анализ данных и отработать следующие приёмы:

  • визуализация сложных данных,
  • сборка Docker-образов,
  • работа с CI/CD конвейерами,
  • работа с документацией - сборка и публикаций с quarto и GitHub Pages,
  • сборка и публикация артефактов исследования.

Исследовательский анализ данных содержит следующие пункты:

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

Развёртывание проекта

Проект и среда разработки запакованы в Docker-контейнер. Для того, чтобы развернуть их на локальной машине или сервере необходимо выполнить следующие шаги:

  1. Установить Docker.
  2. Клонировать репозиторий.
  3. Предоставить необходимые ключи (подробнее в разделе. Ключи).
  4. Собрать образы контейнеров и запустить их. Для сборки и запуска пользователю предлагается использовать следующие скрипты:
    • build.sh - сборка образа базов контейнера и контейнера со средой разработки.
    • start.sh - запуск контейнера со средой разработки в интерактивном режиме с использованием /bin/bash,
    • jupyter.sh - запуск контейнера со средой разработки с запущенным сервером Jupyter Notebook,
    • gh_actions_runner/build_runner.sh - сборка контейнера с self-hosted runner для GitHub Actions,
    • gh_actions_runner/start_runner.sh - запуск контейнера с self-hosted runner для GitHub Actions и самого ранера.

Подробнее о развёртывании и запуске в CONTRIBUTING.md и разделах Среда разработки, CI/CD конвейер GihHub Actions.

Применяемые в проекте инструменты автоматизации описаны в разделе Инструменты автоматизации.

Ключи

Для полноценной работы с проектом необходимо предоставить следующие ключи:

  • /.dev_env_pat - файл с PAT для доступа к репозиторию из среды разработки в контейнере.
  • /.runner_secret_token - Временный токен для работы self-hosted runner с GitHub Actions (подробнее).

Документация

Документация и отчёты разделены на несколько разделов, размещённых в отдельных файлах:

Инструменты автоматизации

В проекте используются следующие инструменты автоматизации (CI/CD):

  • Docker - основной инструмент автоматизации сборки и изоляции окружений;
  • Git - система контроля версий кода;
  • GitHub Actions - инструмент CI/CD;
  • Poetry - менеджер пакетов Python;
  • Cookiecutter - утилита для шаблонизации проектов, с помощью которой была создана структура каталогов и файлов данного репозитория;
  • Pre-commit - утилита для автоматического запуска проверок при каждом коммите.
  • Ruff - автоформатер и линтер для проверки выполнения требований стандартов оформления кода.
  • Mypy - линтер для проверки типов.

Структура репозитория

├── src                           <- Каталог с python-модулями проекта.
│   ├── data                      <- Скрипты для загрузки и обработки данных.
│   ├── features                  <- Скрипты, создающие из сырых данных признаки, пригодные для передачи модели.
│   ├── logs                      <- Каталог с модулями для организации и настройки логирования.
│   ├── models                    <- Модули, реализующие работу с разными моделями. Для каждой модели свой модуль.
│   └── visualization             <- Скрипты для генерации графиков.
|
├── data
│   ├── external                  <- Данные, полученные из внешних источников, например открытых API в интернете.
│   ├── interim                   <- Промежуточные данные, полученные после предобработки сырых данных и данных из
|   |                                внешних источников, а также данные, полученные после промежуточных шагов
|   |                                обработки.
│   ├── processed                 <- Подготовленные данные, пригодные для отправки модели.
│   └── raw                       <- Сырые исходные данные, полученные из первоисточника.
|
├── docs                          <- Документация проекта.
│   └── figures                   <- Иллюстрации для документации.
|
├── .dev_env_pat                  <- файл с PAT для доступа к удалённому репозиторию GitHub из среды разработки в
|                                    контейнере.
|
├── gh_actions_runner             <- Каталог со скриптами и файлами для работы с self-hosted runner
|   |                                (GitHub Actions).
│   ├── build_runner.sh           <- Скрипт, собирающий образ контейнера с ранером из Dockerfile в этом же каталоге.
│   ├── Dockerfile                <- Dockerfile для сборки контейнера с ранером.
│   ├── remove_runner.sh          <- Скрипт аннулирует регистрацию ранера в GitHub Actions, что вызывает остановку
|   |                                работающего ранера.
│   ├── .secret_token             <- Временный токен для регистрации ранера в GitHub Actions. 
│   └── start_runner.sh           <- Скрипт, запускающий контейнер с ранером. После запуска контейнера Скрипт
|                                    также регистрирует и запускает ранер.
├── .github
│   └── workflows                 <- Каталог с описанием CI/CD конвейеров GitHub Actions в формате yaml.
|
├── logs                          <- Каталог для логов.
|
├── models                        <- Каталог с сохранёнными обученными моделями.
|
├── notebooks                     <- Каталог с тетрадками Jupyter
│   ├── exploratory               <- Notebook-и с первичными исследованиями и экспериментами. 
|   |                                В них допустимо большое количество кода.
│   └── reports                   <- Более тщательно оформленные тетрадки, служащие основой для отчётов.
|
├── references                    <- Дополнительные сторонние материалы и руководства.
|
├── reports                       <- Каталог с отчётами. Отчёты содержат информацию об основных этапах
|                                    исследования, разработке модели и полученных результатах. Для остальных
|                                    разделов, например описания окружения разработки и процесса его
|                                    развёртывания есть документация (каталог docs).
|
├── build.sh                      <- Скрипт, собирающий образ базового контейнера из Dockerfile и образ контейнера
|                                    непосредственно с окружением разработки из Dockerfile_dev_env.
├── Dockerfile                    <- Dockerfile базового контейнера.
├── Dockerfile_dev_env            <- Dockerfile контейнера со средой разработки.
├── .dockerignore                 <- Аналог .gitignore для Docker. Docker не будет копировать и обрабатывать всё,
|                                    что перечислено в этом файле.
├── .env                          <- Файл с переменными окружения, которые могут быть импортированы в среду
|                                    разработки.
├── .gitignore
├── jupyter.sh                    <- Скрипт для запуска контейнера среды разработки с запущенным сервером
|                                    Jupyter Notebook.
├── LICENSE                       <- лицензия MIT.
├── poetry.lock                   <- Файл с зафиксированными зависимостями Poetry.
├── pyproject.toml                <- Файл с описанием пакетов, устанавливаемых в виртуальное окружение, и
|                                    параметрами линтеров и автоформатеров.
├── requirements.txt              <- Файл с зафиксированными зависимостями Poetry, экспортированный в формате для
|                                    других менеджеров пакетов.
├── README.md                     <- README.md верхнего уровня, отображающийся на заглавной странице репозитория.
├── CONTRIBUTING.md               <- Руководство для новых участников проекта.
└── start.sh                      <- Скрипт для запуска контейнера среды разработки. Предоставляет доступ к
                                     /bin/bash в контейнере.

ny-tree-census's People

Contributors

alekseibogachev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.