rzabolotin / Data_Science_projects

DataScience projects portfolio

Home Page:https://github.com/Affernus/Data_Science_projects

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Портфолио моих проектов в области DataScience

1. Аналитические проекты

Проект Задача Особенности работы и результат Инструменты
Исследование спроса на авиабилеты во время фестивалей Проанализировать, на каких самолетах и в какие города летают больше. Выяснить, меняется ли спрос на авиабилеты во время фестивалей Данные получил при помощи SQL-запросов. Дополнил информацией о воздушных судах, оценил число перевезённых пассажиров. Сделал вывод о популярных рейсах, самолётах и городах. Выполнил A/B тестирование: сравнил спрос на билеты во время фестивалей и в обычное время. Заметил в данных аномальную неделю, рекомендовал собрать больше данных и повторить анализ. Python, SQL, pandas, numpy, collections, matplotlib, seaborn, plotly, feature engineering, A/B тестирование (перестановочный тест)
Прогноз успешности компьютерных игр Выявить, от чего зависит успешность компьютерной игры, сделать прогноз продаж на следующий год Изучил множество кросс-взаимосвязей, выявил параметры, влияющие на успех игр в разных регионах мира (развёрнутый графический и статистический анализ); описал портрет типичного пользователя, дал рекомендации по рекламной кампании и прогнозы продаж в зависимости от региона, консолей, жанров, оценок пользователей и критиков, рейтинга игры. Python, pandas, numpy, scipy, collections, matplotlib, seaborn , feature engineering, A/B тестирование (t-тест, критерий Манна-Уитни, перестановочный тест), ANOVA, корреляционный анализ, проверка нормальности распределений
Сравнительный анализ доходности тарифов сотовой связи На небольшой выборке клиентов сравнить доходность двух тарифов сотовой связи Выборка - небольшая и разбалансированная. Объединил несколько датасетов. Выполнил feature engineering. В A/B тестах выявил значимые различия времени разговоров, траффика и числа смс у клиентов разных тарифов. Определил тариф, который принёс за год больше прибыли. Отметил, что другой тариф слабо представлен в Санкт-Петербурге. Дал рекомендации. Python, pandas, numpy, scipy, statsmodels.api, matplotlib, seaborn, предобработка данных, A/B тестирование (критерий Манна-Уитни, перестановочный тест), проверка нормальности распределений, оценка размера эффекта
Исследование объявлений о продаже квартир Выяснить, от чего зависит рыночная стоимость недвижимости в Санкт-Петербурге и области Очистил загрязнённые данные: текстовые признаки, слишком быстрые и медленные продажи, выбросы. Изучил графики, корреляции. Выявил, что между регионом и Петербургом основные тенденции схожи, но в столице цены выше, особенно - в центральной зоне. В основном, на рыночную стоимость влияет местоположение, расстояние до центра города, площадь, число комнат, этаж. Python, pandas, numpy, matplotlib, seaborn, предобработка данных, исследовательский и корреляционный анализ (метод Спирмена)

2. Machine learning проекты

Проект Задача Особенности работы и результат Инструменты
Классификация клиентов банка по их лояльности Построить модель бинарной классификации для прогноза, прекратит клиент пользоваться услугами банка или нет При анализе данных обнаружил проблему с продуктами банка (клиенты, использующие продукты, уходят). В данных - дисбаланс классов. Выполнил балансировку (upsampling и downsampling), изучил влияние на качество прогноза. Обучил логистическую регрессию, решающее дерево и случайный лес, проверил адекватность. Настроил порог классификации по predict_proba. Выбрал лучшую балансировку и модель. Python, pandas, numpy, collections, random, sklearn, matplotlib, seaborn , предобработка данных, исследовательский анализ, A/B тестирование, машинное обучение.
Определение тональности комментариев Нужно обучить модель классифицировать комментарии на позитивные и негативные. Язык комментариев - английский. Сравнил модели и методы векторизации текстов: TfidfVectorizer + LogisticRegression, spaCy TextCategorizer, BERT + LogisticRegression. Для работы с BERT оптимизировал данные по особому алгоритму ("smart batching"), существенно ускорил получение эмбеддингов. Сравнил лемматизацию на базе Natural Language Toolkit и spaCy. Выбрал spaCy, как более быстрый и корректный метод. Лучшая комбинация: TfidfVectorizer + LogisticRegression (f1=0.78) Python, pandas, numpy, re, torch, csv, transformers (BERT), spacy, nltk, sklearn, catboost, лемматизация, векторизация текстов, машинное обучение
Прогноз рыночной стоимости автомобилей с пробегом Построить модель для определения рыночной стоимости автомобиля (учесть качество и скорость предсказания, время обучения) Очистил данные (были серьёзно загрязнены). Написал 2 класса для кодирования признаков и заполнения пропусков. Для настройки моделей написал свою функцию. Обучил линейную регрессию, XGBoost, CatBoost, LightGBM. Выбрал LightGBM, как лучший по скорости и качеству. Подобрал оптимальный вариант предобработки данных, объединил всё в pipeline. Python, pandas, numpy, math, datetime, collections, ipywidgets, sklearn, catboost, lightgbm, xgboost, category_encoders, matplotlib, seaborn, предобработка данных, исследовательский анализ, машинное обучение.
Определение возраста человека по его фотографии Построить модель, которая по фотографии определит приблизительный возраст человека Применил аугментацию для увеличения объёма выборки (в некоторых возрастных интервалах недостаточно данных). Построил и обучил собственную свёрточную сеть (на gpu kaggle), и сеть на базе ResNet (на платформе Яндекс.Практикум). Для борьбы с переобучением делал dropout. В обоих случаях добился целевого значения метрики. Python, pandas, numpy, PIL, matplotlib, seaborn, Keras , исследовательский анализ, обучение свёрточных нейронных сетей.
Прогноз эффективности восстановления золота из золотосодержащей руды Построить модель для прогноза коэффициента восстановления золота (recovery) из золотосодержащей руды Обработал данные (много пропусков и аномалий). Построил подробную схему обогащения руды. Изучил сложный характер взаимосвязей признаков (объёмный анализ с визуализацией). Для прогноза recovery использовал прямой прогноз и косвенный. Сравнил модели Lasso, XGBoostRegressor, CatBoostRegressor. Выбрал прямой метод прогноза и линейную модель Lasso . Python, pandas, numpy, math, sklearn, catboost, xgboost, matplotlib, seaborn, предобработка данных, исследовательский анализ, машинное обучение.
Защита данных клиентов с сохранением качества работы ML моделей Разработать метод шифрования данных, не меняющий качество работы модели линейной регрессии Выявил особенности взаимосвязей признаков. Провёл feature engineering, существенно улучшил целевую метрику. Для шифрования данных предложил алгоритм на основе методов линейной алгебры. Обучил модели линейной регрессии. Показал, что качество прогноза не меняется, если кодирующая матрица обратима. Python, pandas, numpy, sklearn, matplotlib, seaborn, предобработка данных, исследовательский анализ, feature engineering, матричное умножение, транспонирование матриц, вычисление детерминанта, проверка обратимости
Выбор региона для разработки нефтяных месторождений Разработать модель для прогноза объёма нефти в месторождении. Оценить риск убытков при разработке региона на основании прогнозов модели. Рекомендовать один из регионов к разработке. Использовал feature engineering: увидел, что признаки принадлежат разным кластерам. Ввёл признак - метку кластера, применил свои методы. Метрики улучшились почти в 1.5 раза, число признаков сократилось до двух. Оценил риски убытков и потенциальную прибыль от разработки месторождений в трёх регионах. Для каждого сымитировал 1000 случаев исследования и разработки. Использовал технику bootstrap. Рекомендовал регион с наименьшим риском убытков. Python, pandas, numpy, scipy, collections, matplotlib, seaborn, plotly, sklearn, hdbscan, catboost, xgboost, feature engineering, статистический анализ (bootstrap, перестановочный тест, A/B тестирование), машинное обучение.
Модель для подбора тарифа сотовой связи Разработать модель, которая порекомендует для пользователя один из двух тарифов сотовой связи Выявил сильную взаимосвязь 2 признаков. Обучил DecisionTreeClassifier, RandomForestClassifier, LogisticRegression со всеми признаками и исключив один из коррелирующих. Проверил модели на адекватность, сравнил скорость работы. Настроил гиперпараметры (применял графический анализ и classification_report). Выбрал оптимальную модель. Python, pandas, numpy, scipy, collections, datetime, random, sklearn, matplotlib, seaborn, визуализация, статистический анализ, машинное обучение.
Прогноз количества заказов такси на следующий час Построить модель для прогноза количество заказов такси на следующий час Выполнил feature engineering на основе декомпозиции временного ряда (seasonal_decompose) и расчёта автокорреляций (plot_acf), сделал наглядный графический анализ. Обучил линейную регрессию, XGBoost и CatBoost. Выбрал линейную регрессию: по качеству почти не уступала моделям градиентного спуска. При этом проста, не склонна к переобучению и лучше масштабируется. Python, pandas, numpy, sklearn, statsmodels, catboost, xgboost, matplotlib, seaborn, декомпозиция временного ряда, автокорреляционный анализ, машинное обучение.
Прогноз оттока клиентов Разработать модель, которая спрогнозирует уход клиента Рассмотрел 7 классификаторов (Catboost, LGBM, XGBoost, RandomForest, ExtraTrees, KNN и Logistic Regression), а также стек из них. На основе кросс-валидации выбрал CatBoost. На тестовой выборке ROC_AUC: 0.87 и ACCURACY: 0.79 pandas, numpy, sklearn, category_encoders, catboost, xgboost, lightgbm, matplotlib, seaborn

About

DataScience projects portfolio

https://github.com/Affernus/Data_Science_projects


Languages

Language:Jupyter Notebook 100.0%