Коллекция учебных и исследовательских проектов по машинному обучению.
Основной фокус репозитория — реализация классических ML-алгоритмов с использованием Python и NumPy, изучение их внутренней логики и сравнение с реализациями из специализированных библиотек.
Рассматриваются задачи регрессии, классификации, валидации, кластеризации, снижения размерности, ансамблевого обучения и построения нейронных сетей.
Репозиторий содержит учебные реализации. Собственные алгоритмы предназначены для изучения математических принципов и не заменяют оптимизированные production-реализации из scikit-learn, CatBoost, LightGBM или PyTorch.
- построение полного экспериментального ML-пайплайна;
- исследовательский анализ и подготовку данных;
- реализацию алгоритмов через NumPy;
- использование объектно-ориентированного подхода;
- разработку интерфейсов
fit,predictиpredict_proba; - расчёт и интерпретацию метрик качества;
- работу с различными стратегиями валидации;
- предотвращение утечек данных;
- подбор гиперпараметров;
- сравнение собственных и библиотечных моделей;
- работу с PyTorch и автоматическим дифференцированием.
All-DS-ML-projects/
├── ML1/ # введение в ML и задача регрессии
├── ML2/ # линейные модели и регуляризация
├── ML3/ # валидация и подбор гиперпараметров
├── ML4/ # алгоритмы классификации
├── ML5/ # деревья решений и ансамбли
├── ML6/ # снижение размерности
├── ML7/ # кластеризация
├── ML8/ # нейронная сеть и backpropagation
├── ML_extra_Torch/ # основы PyTorch
└── README.md
Материалы по Python, SQL, pandas и основам обработки данных вынесены в отдельный репозиторий:
| Модуль | Тема | Основные инструменты |
|---|---|---|
| ML1 | Регрессия и базовый ML-пайплайн | pandas, scikit-learn |
| ML2 | Линейные модели и регуляризация | NumPy |
| ML3 | Валидация и подбор гиперпараметров | scikit-learn, Optuna, SHAP |
| ML4 | Алгоритмы классификации | NumPy, pandas |
| ML5 | Деревья и ансамбли | NumPy, CatBoost, LightGBM, XGBoost |
| ML6 | Снижение размерности | SVD, t-SNE, UMAP |
| ML7 | Кластеризация | K-Means, DBSCAN |
| ML8 | Нейронные сети с нуля | NumPy |
| ML extra | Основы PyTorch | PyTorch |
Каталог: ML1
Базовый ML-пайплайн для задачи регрессии:
- исследовательский анализ данных;
- анализ распределений;
- обработка выбросов;
- подготовка признаков;
- разделение данных;
- обучение линейной регрессии и дерева решений;
- расчёт и сравнение метрик качества.
Цель модуля — показать последовательность работы от исходных данных до оценки обученной модели.
Каталог: ML2
Изучение линейных моделей и методов регуляризации.
Основные темы:
- градиентный и стохастический градиентный спуск;
- масштабирование признаков;
- линейная регрессия;
- L1-регуляризация;
- L2-регуляризация;
- ElasticNet;
- реализация алгоритмов с помощью NumPy;
- сравнение с библиотечными реализациями.
Каталог: ML3
Методы корректной оценки качества моделей:
- классическая кросс-валидация;
- временные разбиения;
- групповые разбиения;
- предотвращение data leakage;
- permutation importance;
- интерпретация модели через SHAP;
- Grid Search;
- подбор гиперпараметров с использованием Optuna.
Каталог: ML4
Реализация алгоритмов бинарной классификации:
- логистическая регрессия;
- K-Nearest Neighbors;
- Naive Bayes;
- интерфейсы
fit,predictиpredict_proba; - Precision;
- Recall;
- F1;
- ROC AUC;
- PR AUC;
- Gini.
Собственные реализации используются для изучения внутренней логики алгоритмов и сравниваются с библиотечными аналогами.
Каталог: ML5
Изучение древовидных моделей:
- построение узлов и правил разделения;
- критерии Gini, entropy и variance;
- Decision Tree;
- Random Forest;
- Extra Trees;
- Gradient Boosting;
- сравнение с CatBoost, LightGBM и XGBoost.
Каталог: ML6
Методы снижения размерности и представления данных:
- матричное разложение;
- Singular Value Decomposition;
- сжатие изображений;
- выделение компонентов данных;
- работа с разреженными матрицами;
- t-SNE;
- UMAP.
Каталог: ML7
Алгоритмы обучения без учителя:
- K-Means;
- DBSCAN;
- выбор количества кластеров;
- Elbow Method;
- Silhouette Score;
- анализ структуры кластеров;
- использование кластерных признаков в последующих моделях.
Каталог: ML8
Реализация многослойной нейронной сети с помощью NumPy:
- линейные слои;
- функции активации;
- forward pass;
- backpropagation;
- chain rule;
- функции потерь;
- обновление весов;
- оптимизатор Adam;
- цикл обучения и оценка качества.
Цель проекта — разобраться в базовых механизмах обучения нейронных сетей без использования готового deep learning framework.
Каталог: ML_extra_Torch
Дополнительные задания по работе с PyTorch:
- создание и преобразование тензоров;
- автоматическое дифференцирование;
nn.Module;DatasetиDataLoader;- построение MLP;
- Batch Normalization;
- Dropout;
- собственный train/validation loop;
- оценка модели через classification metrics.
Python, pandas, NumPy
scikit-learn, CatBoost, LightGBM, XGBoost
SHAP, Optuna
PyTorch
Matplotlib, Seaborn
Jupyter Notebook
git clone https://github.com/BulatKSMNT/All-DS-ML-projects.git
cd All-DS-ML-projectsLinux/macOS:
python3 -m venv .venv
source .venv/bin/activateWindows PowerShell:
python -m venv .venv
.venv\Scripts\Activate.ps1После добавления общего файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements.txtjupyter notebookВыберите каталог проекта и откройте соответствующий notebook.
В проектах используются открытые и учебные наборы данных.
Крупные датасеты могут отсутствовать в Git-репозитории. В таком случае
информация о получении данных должна быть приведена в README.md
соответствующего модуля.
Не рекомендуется добавлять в Git:
- крупные CSV-файлы;
- обученные модели большого размера;
- кеш библиотек;
- секреты и API-ключи;
- временные результаты выполнения notebook.
- проекты реализованы преимущественно в Jupyter Notebook;
- модули не объединены в единый Python-пакет;
- собственные ML-алгоритмы являются учебными реализациями;
- производительность не сравнивается с низкоуровневыми реализациями библиотек;
- общий автоматизированный запуск notebook пока не настроен;
- CI/CD отсутствует;
- часть проектов требует внешних датасетов;
- результаты могут зависеть от версии библиотек и
random_state.
Учебные проекты по Python, SQL, Unix и обработке данных:
Булат Хатыпов
- GitHub: BulatKSMNT
- Telegram: @khat911