Материалы для прохождения учебного курса "DS for non DS" (Введение в Data Science, практический курс), организованного Высшей Школой Экономики для Райффайзенбанка.
Группа:
.vscode
- настройки для Visual Studio Codeapi
- API-сервис на FastAPIdata
- исходны данные по задачеexplainer
- интерактивный дашборд ExplainerDashboardmodels
- сохраненные моделиnotebooks
- ноутбуки Jupyterscripts
- вспомогательные скрипты Bash
Ноутбук доступен в 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
.
- Создать задачу (issue) по новому домашнему заданию.
- Создать ветку (branch) для соответствующей задачи.
- По готовности доработок сделать объединение (pull request) из новой ветки.
- По выполнении задачи закрыть ветку и закрыть задачу.
При сохранении ноутбуков из 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
Для запуска дашборда можно, находясь в корневой директории проекта, ввести команду (для macOS/Linux):
sh scripts/run_explainer.sh
Или выполнить команду после активации виртуального окружения:
python explainer/main.py
Для запуска 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 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.