Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/egorumaev/2023-ods-turnstiles
Идентификация посетителя в зависимости от характерного времени его прохода на территорию организации
https://github.com/egorumaev/2023-ods-turnstiles
catboost featureengineering imblearn multiclass-classification pandas pipeline python3 sklearn
Last synced: 16 days ago
JSON representation
Идентификация посетителя в зависимости от характерного времени его прохода на территорию организации
- Host: GitHub
- URL: https://github.com/egorumaev/2023-ods-turnstiles
- Owner: egorumaev
- Created: 2023-12-21T14:03:06.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-22T02:59:01.000Z (about 1 year ago)
- Last Synced: 2024-11-10T13:25:03.754Z (2 months ago)
- Topics: catboost, featureengineering, imblearn, multiclass-classification, pandas, pipeline, python3, sklearn
- Language: Jupyter Notebook
- Homepage:
- Size: 1.98 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 2023-ods-turnstiles
Турникеты# **ПРОЕКТ «Турникеты»**
Проект выполнен в рамках участия в осенних треках **Open Data Science**, прошедших в сентябре-ноябре 2023 г.
Официальные сайты треков:
* [Open ML Course: Линейные модели](https://ods.ai/tracks/linear-models-autumn23 'Программа трека')
![](https://github.com/egorumaev/2023-ods-turnstiles/blob/main/Open%20ML%20%D0%9A%D1%83%D1%80%D1%81%20%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B5%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8.PNG)
* [Open ML Course: Деревья и их ансамбли](https://ods.ai/tracks/trees-autumn23 'Программа трека')
![](https://github.com/egorumaev/2023-ods-turnstiles/blob/main/Open%20ML%20%D0%9A%D1%83%D1%80%D1%81%20%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F%20%D0%B8%20%D0%B8%D1%85%20%D0%B0%D0%BD%D1%81%D0%B0%D0%BC%D0%B1%D0%BB%D0%B8.PNG)
---
## **Примененные библиотеки и технологии**
* Pandas, Numpy, Random, Matplotlib, Seaborn, Datetime, Sklearn, Imblearn, CatBoost
* Feature Engineering, Polynomial Features, SelektKBest, GridSearchCV, RandomizedSearchCV, Pipeline, OneVsRestClassifier, Confusion Matrix
---
## **Цель и задачи проекта**
**Цель**: на основе накопленных данных идентифицировать посетителя в зависимости от характерного времени его прохода на территорию организации, исключив вероятность передачи пропуска одним сотрудником другому. Таким образом необходимо исключить ситуации, когда один сотрудник прикладывает пропуск за другого, который даже не появляется в организации, но по цифровому следу присуствует на ее территории.
Для достижения цели выполнены следующие **задачи**:
* проведен исследовательский анализ данных, выявлены характерные особенности, удалены выбросы и дубликаты;
* с помощью Feature Engineering на основе признака 'ts' с информацией о дате и времени пересечения турникета сгенерировано 80 новых обучающих признаков. После проверки на мультиколлинеарность удалены 3 признака;
* обучены модели LogisticRegression и CatBoost. Лучший результат получен на модели CatBoost, обученной с гиперпараметром loss_function = 'MultiClassOneVsAll'.
В техзадании на выполнение проекта оговорено **ограничение**: машинное обучение должно быть выполнено отдельно для:
- линейной (логистической) регрессии
- модели, основанной на решающем дереве
Решаемая в рамках проекта задача является задачей **мультиклассификации**.
---
## **Основные результаты**
**(1)** На основе признака ‘ts’, имеющего тип ‘datetime64’, с помощью Feature Engineering создано 80 признаков для обучения машинных моделей. Проведен анализ признаков на мультиколлинеарность, в результате которого удалено 3 признака.
**(2)** Модель LogisticRegression обучена с помощью Pipleline и без Pipeline c multi_class = ‘multinomial’ и ‘ovr’. Модели, обученные без Pipeline с multi_class = ‘multinomial’ и ‘ovr’ показали более высокий результат в сравнении с моделью, обученной с помощью Pipeline. Результат обучения указанных двух моделей оказался примерно одинаков.
**(3)** В качестве модели, основанной на решающих деревьях, была выбрана модель CatBoost, обученная с помощью Pipeline. Лучший результат показал запуск с loss_function = 'MultiClassOneVsAll', который был отправлен как итоговое решение.