- О чем этот проект
- Установка зависимостей проекта
- Возможные ошибки при настройке окружения
- Другие инструкции
- Запуск генератора
Реализовал на python генерацию синтетических банковских транзакций: легальных и мошеннических с учётом поведения клиентов и реализма сценариев. Моделирование транзакций. Полученные датасеты можно использовать для тестирования работы правил антифрод системы.
Стек: python (pandas, numpy, geopandas,matplotlib, ООП), Poetry, Power BI (модель данных, DAX)
-
Очистил и преобразовал данные под генерацию при помощи
pandas,numpy,geopandas. -
Написал модульный генератор транзакций при помощи функций и ООП. Разные разделы логики генератора это разные файлы, функции и классы, но точка запуская - единая. Вот схема: ссылка
-
Конфигурации генератора транзакций поместил в
YAMLфайлы, чтобы их можно было менять без исправления кода. -
Процесс документировал в jupyter ноутбуках - там обработка начальных данных и демонстрация главных функций и классов генератора. Также есть сайт с описанием проекта, где на каждый раздел есть страница с описанием.
-
Загрузил данные в
Power BI, создал модель данных и на ее основании дашборд с информацией о транзакциях. Создал визуализации, применил условное форматирование, создалDAXмеры. Видео демонстрация на 2,5 минуты: Ссылка -
Зависимости проекта прописал в
tomlфайле.
Итоги проекта:
- Полученные датасеты можно использовать для тестирования работы правил антифрод системы.
- Улучшил навыки обработки данных в
pandas,numpy,geopandas. - Приобрел опыт написания систематизированного и связного кода. Компоненты отдельные, могут тестироваться по отдельности, но связаны в систему. Считаю что такой опыт очень полезен для работы с
ETL, обработкой данных. - Научился работать с конфигурациями в файлах (
YAML). - Приобрел опыт ведения и выполнения объемной задачи от начала до конца: 14 jupyter ноутбуков с документированием процесса, более 2-х месяцев работы, примерно 4000 строк кода в модуле генератора.
Более развернутое описание проекта по ссылке - это сайт проекта. Там более подробное описание генератора транзакций по разделам.
Мошенничества (фрода) два типа:
- compromised client fraud - банковский аккаунт или карта клиента скомпрометированы.
- дроп фрод - клиент является дропом, дропов два типа: которые просто посредники в переправке потока денег (распределители) и которые занимаются отмыванием через покупку товаров на присланные им деньги (покупатели)
Фрод генерируется в соответствии с антифрод правилами. Т.е. транзакции генерируются с такими характеристиками, чтобы попадать под конкретные антифрод правила. В случае с compromised client fraud правило выбирается случайно и под него генерируется транзакция/и.
Все зависимости, включая модули проекта прописаны в pyproject.toml файле.
Предлагаю установить их при помощи менеджера зависимостей poetry.
git clone https://github.com/iaroslav-dzh/fraud_txns_simulator.git(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -При установке для Windows через powershell добавить путь ниже в path для пользователя
C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Roaming\Python\Scripts
После установки и добавления пути в path перезапустить терминал, затем проверить:
poetry --version
curl -sSL https://install.python-poetry.org | python3 -При установке для Линукс или macOS добавить путь ниже в PATH
$HOME/.local/binПосле установки и добавления пути в PATH перезапустить терминал, затем проверить:
poetry --version
- Создание среды, установка всех зависимостей, включая собственные модули согласно файлу
pyproject.toml
Перейти в директорию проекта(клонированного репозитория) и исполнить команду
poetry install
Будет создана виртуальная среда и установлены все зависимости
Чтобы войти в виртуальную среду где установлены все зависимости.
Документация Poetry: Activating the environment
Находясь в директории проекта в терминале исполнить команду
Invoke-Expression (poetry env activate)ЛИБО
Исполнить
poetry env activate
И затем скопировать вывод команды. Если это путь к скрипту, например:
"C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Local\pypoetry\Cache\virtualenvs\<НАЗВАНИЕ_СРЕДЫ>\Scripts\activate.ps1"
Вставить вывод в терминал и нажать Enter
C:\Users\<ИМЯ_ПОЛЬЗОВАТЕЛЯ>\AppData\Local\pypoetry\Cache\virtualenvs\<НАЗВАНИЕ_СРЕДЫ>\Scripts\activate.ps1
Находясь в директории проекта в терминале исполнить команду
eval $(poetry env activate)ЛИБО
Исполнить
poetry env activate
И затем скопировать вывод команды. Это может быть команда и путь, например:
source home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/.cache/pypoetry/virtualenvs/<ИМЯ_СРЕДЫ>/activateВставить вывод в терминал и нажать Enter
Poetry не может найти python.
Если в консоли будет что-то типа:
Command '['C:\\Users\\<USER>\\AppData\\Local\\Microsoft\\WindowsApps\\python.EXE', '-EsSc', 'import sys; print(sys.executable)']' returned non-zero exit status 9009.
Это исправляется командой:
poetry config virtualenvs.use-poetry-python true
Теперь poetry использует python который использовался при ее установке.
Исполнить команду ниже. Для разрешения исполнения скриптов в текущей сессии powershell
Set-ExecutionPolicy RemoteSigned -Scope Process
Справка:
- Зайти в виртуальную среду
- Установить ipykernel
poetry add ipykernel - Зарегистрировать poetry среду как ядро в Jupyter
python -m ipykernel install --user --name=poetry-env --display-name "Python (poetry-env)"
- Запустить Jupyter Notebook (можно из Anaconda или терминала), и в списке ядер (kernels) выберите
Python (poetry-env).
Чтобы запустить генератор транзакций:
- Войти в виртуальную среду проекта
- Исполнить команду
python run_generator.py
У генератора транзакций могут быть заданы конфигурации через yaml файлы в папке config/. Подробнее об этом в Основные конфигурации и запуск генератора