Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Machine Learning From Scratch

Python NumPy scikit-learn PyTorch Jupyter

Коллекция учебных и исследовательских проектов по машинному обучению.

Основной фокус репозитория — реализация классических 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 и основам обработки данных вынесены в отдельный репозиторий:

python-data-toolkit

Карта проектов

Модуль Тема Основные инструменты
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 — Machine Learning Foundations

Каталог: ML1

Базовый ML-пайплайн для задачи регрессии:

  • исследовательский анализ данных;
  • анализ распределений;
  • обработка выбросов;
  • подготовка признаков;
  • разделение данных;
  • обучение линейной регрессии и дерева решений;
  • расчёт и сравнение метрик качества.

Цель модуля — показать последовательность работы от исходных данных до оценки обученной модели.

ML2 — Linear Models and Regularization

Каталог: ML2

Изучение линейных моделей и методов регуляризации.

Основные темы:

  • градиентный и стохастический градиентный спуск;
  • масштабирование признаков;
  • линейная регрессия;
  • L1-регуляризация;
  • L2-регуляризация;
  • ElasticNet;
  • реализация алгоритмов с помощью NumPy;
  • сравнение с библиотечными реализациями.

ML3 — Validation and Hyperparameter Tuning

Каталог: ML3

Методы корректной оценки качества моделей:

  • классическая кросс-валидация;
  • временные разбиения;
  • групповые разбиения;
  • предотвращение data leakage;
  • permutation importance;
  • интерпретация модели через SHAP;
  • Grid Search;
  • подбор гиперпараметров с использованием Optuna.

ML4 — Classification From Scratch

Каталог: ML4

Реализация алгоритмов бинарной классификации:

  • логистическая регрессия;
  • K-Nearest Neighbors;
  • Naive Bayes;
  • интерфейсы fit, predict и predict_proba;
  • Precision;
  • Recall;
  • F1;
  • ROC AUC;
  • PR AUC;
  • Gini.

Собственные реализации используются для изучения внутренней логики алгоритмов и сравниваются с библиотечными аналогами.

ML5 — Tree-Based Models and Ensembles

Каталог: ML5

Изучение древовидных моделей:

  • построение узлов и правил разделения;
  • критерии Gini, entropy и variance;
  • Decision Tree;
  • Random Forest;
  • Extra Trees;
  • Gradient Boosting;
  • сравнение с CatBoost, LightGBM и XGBoost.

ML6 — Dimensionality Reduction

Каталог: ML6

Методы снижения размерности и представления данных:

  • матричное разложение;
  • Singular Value Decomposition;
  • сжатие изображений;
  • выделение компонентов данных;
  • работа с разреженными матрицами;
  • t-SNE;
  • UMAP.

ML7 — Clustering

Каталог: ML7

Алгоритмы обучения без учителя:

  • K-Means;
  • DBSCAN;
  • выбор количества кластеров;
  • Elbow Method;
  • Silhouette Score;
  • анализ структуры кластеров;
  • использование кластерных признаков в последующих моделях.

ML8 — Neural Network From Scratch

Каталог: ML8

Реализация многослойной нейронной сети с помощью NumPy:

  • линейные слои;
  • функции активации;
  • forward pass;
  • backpropagation;
  • chain rule;
  • функции потерь;
  • обновление весов;
  • оптимизатор Adam;
  • цикл обучения и оценка качества.

Цель проекта — разобраться в базовых механизмах обучения нейронных сетей без использования готового deep learning framework.

ML Extra — PyTorch Foundations

Каталог: ML_extra_Torch

Дополнительные задания по работе с PyTorch:

  • создание и преобразование тензоров;
  • автоматическое дифференцирование;
  • nn.Module;
  • Dataset и DataLoader;
  • построение MLP;
  • Batch Normalization;
  • Dropout;
  • собственный train/validation loop;
  • оценка модели через classification metrics.

Используемые технологии

Data processing

Python, pandas, NumPy

Machine Learning

scikit-learn, CatBoost, LightGBM, XGBoost

Model analysis

SHAP, Optuna

Deep Learning

PyTorch

Visualization

Matplotlib, Seaborn

Development environment

Jupyter Notebook

Запуск

1. Клонируйте репозиторий

git clone https://github.com/BulatKSMNT/All-DS-ML-projects.git
cd All-DS-ML-projects

2. Создайте виртуальное окружение

Linux/macOS:

python3 -m venv .venv
source .venv/bin/activate

Windows PowerShell:

python -m venv .venv
.venv\Scripts\Activate.ps1

3. Установите зависимости

После добавления общего файла requirements.txt:

python -m pip install --upgrade pip
pip install -r requirements.txt

4. Запустите Jupyter

jupyter notebook

Выберите каталог проекта и откройте соответствующий notebook.

Данные

В проектах используются открытые и учебные наборы данных.

Крупные датасеты могут отсутствовать в Git-репозитории. В таком случае информация о получении данных должна быть приведена в README.md соответствующего модуля.

Не рекомендуется добавлять в Git:

  • крупные CSV-файлы;
  • обученные модели большого размера;
  • кеш библиотек;
  • секреты и API-ключи;
  • временные результаты выполнения notebook.

Ограничения

  • проекты реализованы преимущественно в Jupyter Notebook;
  • модули не объединены в единый Python-пакет;
  • собственные ML-алгоритмы являются учебными реализациями;
  • производительность не сравнивается с низкоуровневыми реализациями библиотек;
  • общий автоматизированный запуск notebook пока не настроен;
  • CI/CD отсутствует;
  • часть проектов требует внешних датасетов;
  • результаты могут зависеть от версии библиотек и random_state.

Связанный репозиторий

Учебные проекты по Python, SQL, Unix и обработке данных:

python-data-toolkit

Автор

Булат Хатыпов

About

Educational machine learning projects: regression, classification, clustering, ensembles and neural networks from scratch

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages