Skip to content
This repository has been archived by the owner on Oct 29, 2023. It is now read-only.

Материалы для прохождения учебного курса "DS for non DS", организованного ВШЭ для Райффайзенбанка

mikhpo/ds-for-non-ds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DS-for-non-DS

Материалы для прохождения учебного курса "DS for non DS" (Введение в Data Science, практический курс), организованного Высшей Школой Экономики для Райффайзенбанка.

Группа:

Содержание репозитория

  • .vscode - настройки для Visual Studio Code
  • api - API-сервис на FastAPI
  • data - исходны данные по задаче
  • explainer - интерактивный дашборд ExplainerDashboard
  • models - сохраненные модели
  • notebooks - ноутбуки Jupyter
  • scripts - вспомогательные скрипты Bash

Google Colab

Ноутбук доступен в Google Colab по адресу https://colab.research.google.com/drive/1RJVk4It2gAIzuc7Zeru_P8AlamfJ_lt7

Описание задачи

Кредитный скоринг

Ваша задача состоит в том, чтобы по различным характеристикам клиентов спрогнозировать целевую переменную - имел клиент просрочку 90 и более дней или нет (и если имел, то банк не будет выдавать кредит этому клиенту, а иначе будет).

Ниже находится описание признаков клиентов.

Целевая переменная: SeriousDlqin2yrs - клиент имел просрочку 90 и более дней

  • RevolvingUtilizationOfUnsecuredLines: Общий баланс средств (total balance on credit cards and personal lines of credit except real estate and no installment debt like car loans divided by the sum of credit limits).
  • age: Возраст заемщика
  • NumberOfTime30-59DaysPastDueNotWorse: Сколько раз за последние 2 года наблюдалась просрочка 30-59 дней.
  • DebtRatio: Ежемесячные расходы (платеж по долгам, алиментам, расходы на проживания) деленные на месячный доход.
  • MonthlyIncome: Ежемесячный доход.
  • NumberOfOpenCreditLinesAndLoans: Количество открытых кредитов (например, автокредит или ипотека) и кредитных карт.
  • NumberOfTimes90DaysLate: Сколько раз наблюдалась просрочка (90 и более дней).
  • NumberRealEstateLoansOrLines: Количество кредитов (в том числе под залог жилья)
  • RealEstateLoansOrLines: Закодированное количество кредитов (в том числе под залог жилья) - чем больше код буквы, тем больше кредитов
  • NumberOfTime60-89DaysPastDueNotWorse: Сколько раз за последние 2 года заемщик задержал платеж на 60-89 дней.
  • NumberOfDependents: Количество иждивенцев на попечении (супруги, дети и др).
  • GroupAge: закодированная возрастная группа - чем больше код, тем больше возраст.

Таблица находится в схеме public под названием credit_scoring.

Порядок работы

  1. Создать задачу (issue) по новому домашнему заданию.
  2. Создать ветку (branch) для соответствующей задачи.
  3. По готовности доработок сделать объединение (pull request) из новой ветки.
  4. По выполнении задачи закрыть ветку и закрыть задачу.

При сохранении ноутбуков из Google Colab ноутбуки следует сохранять в директории notebooks и в текущей ветке, которая находится в разработке. Необходимо делать регулярные коммиты, чтобы избежать потери данных и синхронизировать совместную работу над задачей.

Управление виртуальным окружением

Ниже представлен список команд для работы с виртуальным окружением Python. Синтаксис команд актуален для macOS и Linux, для Windows синтаксис команд может отличаться, но общий порядок действий такой же.

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

python3 -m venv .venv

Это создаст в корневой директории проекта папку .venv с виртуальным окружением. Далее необходимо активировать виртуальное окружение командой:

source .venv/bin/activate

Для установки пакетов Python, используемых проектом, необходимо выполнить команду:

pip install -r requirements.txt

Это приведет к установке зависимостей в виртуальное окружение проекта. Список зависимостей будет считан из файла requirements.txt, расположенного в корневой директории проекта.

Также можно воспользоваться скриптом install_requirements.sh, который воспроизводит эти команды:

sh scripts/install_requirements.sh

Подробнее про работу с виртуальным окружением см. документацию на модуль venv Python: https://docs.python.org/3/library/venv.html

ExplainerDashboard

Для запуска дашборда можно, находясь в корневой директории проекта, ввести команду (для macOS/Linux):

sh scripts/run_explainer.sh

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

python explainer/main.py

FastAPI

Для запуска API-сервиса на FastAPI можно, нахродясь в корневой директории проекта, ввести команду (для macOS/Linux):

sh scripts/run_api.sh

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

uvicorn api.main:app/ --reload

Флаг --reload означает, что сервер будет отслеживать изменения в файлах .py и автоматически перезапускаться.

Тесты

Для запуска тестов можно, находясь в корневой директории проекта, ввести команду (для macOS/Linux):

sh scripts/run_tests.sh

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

pytest

Docker

Для создания образа необходимо выполнить команду:

docker build -t ds-for-non-ds .

Это приведет к созданию образа с названием ds-for-non-ds.

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

docker run -d -p 81:8001 -p 80:8002 ds-for-non-ds

Это запустит контейнер с двумя сервисами: ExplainerDashboard на порте контейнера 8001 с сопоставлением порту хоста 81 и FastAPI на порте контейнера 8002 с сопоставлением порту хоста 80.

About

Материалы для прохождения учебного курса "DS for non DS", организованного ВШЭ для Райффайзенбанка

Topics

Resources

Stars

Watchers

Forks

Languages