Skip to main content

Machine learning libary built with NumPy

Project description

ml-lite

ml-lite ist eine bewusst schlank gehaltene Python-Bibliothek für lineare Regressionsmodelle. Die Algorithmen sind mit NumPy implementiert und eignen sich vor allem dazu, Gradientenabstieg, Regularisierung und Regressionsmetriken nachvollziehbar zu lernen.

Hinweis: Das Projekt ist ein Lernprojekt und kein Ersatz für produktive Bibliotheken wie scikit-learn.

Inhalt

Funktionen

Komponente Beschreibung
LinearRegression Lineare Regression ohne Regularisierung
RidgeRegression Lineare Regression mit L2-Regularisierung
LassoRegression Lineare Regression mit L1-Regularisierung
GradientDescent Optimierer für die iterative Aktualisierung von Gewichten und Bias
mse Mean Squared Error (mittlerer quadratischer Fehler)
r2 Bestimmtheitsmaß R²

Alle Modelle werden per Gradientenabstieg trainiert. Während des Trainings speichert model.loss den mittleren quadratischen Fehler jeweils alle 100 Iterationen.

Voraussetzungen und Installation

Benötigt werden Python 3.10 oder neuer sowie NumPy. Für die Tests wird zusätzlich pytest verwendet.

git clone <repository-url>
cd ml-lite
python -m venv .venv
source .venv/bin/activate       # Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e '.[dev]'

Ohne Test-Abhängigkeiten genügt:

python -m pip install -e .

Schnellstart

import numpy as np

from ml_lite import GradientDescent, RidgeRegression, mse, r2

# Jede Zeile ist eine Beobachtung, jede Spalte ein Merkmal.
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([7, 8, 9])

optimizer = GradientDescent(lr=0.01, n_iter=5_000)
model = RidgeRegression(lambda_=0.5, optimizer=optimizer)

model.fit(X, y)
predictions = model.predict(X)

print("Vorhersagen:", predictions)
print("Gewichte:", model.w)
print("Bias:", model.b)
print("MSE:", mse(y, predictions))
print("R²:", r2(y, predictions))

fit(X, y) initialisiert die Modellparameter zufällig und optimiert sie für die konfigurierte Anzahl an Iterationen. Daher können die Ergebnisse zwischen Ausführungen leicht variieren. X muss zweidimensional sein (n_beobachtungen × n_merkmale); y enthält einen Zielwert pro Beobachtung.

API-Übersicht

Modelle

from ml_lite import LinearRegression, RidgeRegression, LassoRegression
Klasse Konstruktor Zweck
LinearRegression LinearRegression(optimizer=None) Minimiert den quadratischen Vorhersagefehler.
RidgeRegression RidgeRegression(lambda_=0.1, optimizer=None) Ergänzt die Optimierung um eine L2-Strafe für große Gewichte.
LassoRegression LassoRegression(lambda_=0.1, optimizer=None) Ergänzt die Optimierung um eine L1-Strafe und kann Gewichte in Richtung null drücken.

Gemeinsame Methoden und Attribute:

Element Beschreibung
fit(X, y) Trainiert das Modell.
predict(X) Gibt Vorhersagen zurück; vor dem Training wird ein ValueError ausgelöst.
w Gewichtsvektor nach dem Training.
b Bias (Achsenabschnitt) nach dem Training.
loss Liste der während des Trainings aufgezeichneten MSE-Werte.

Optimierer

from ml_lite import GradientDescent

optimizer = GradientDescent(lr=0.01, n_iter=1_000)
  • lr: Lernrate. Zu große Werte können dazu führen, dass das Training nicht konvergiert.
  • n_iter: Anzahl der Aktualisierungsschritte.

Wird kein Optimierer übergeben, verwenden die Modelle GradientDescent() mit lr=0.01 und n_iter=1000.

Metriken

from ml_lite import mse, r2

error = mse(y_true, y_pred)
score = r2(y_true, y_pred)
  • mse(y, y_pred) berechnet den mittleren quadratischen Fehler. Kleinere Werte sind besser; bei perfekten Vorhersagen ist der Wert 0.
  • r2(y, y_pred) berechnet R². Bei perfekten Vorhersagen ist der Wert 1; negative Werte sind bei sehr schlechten Modellen möglich.

Tests und Demo

Die Beispielanwendung trainiert alle drei Modelle und gibt Vorhersagen, Koeffizienten sowie Metriken aus:

python test.py

Die automatisierten Tests lassen sich nach Installation der Entwicklungsabhängigkeiten ausführen:

python -m pytest -q

Projektstruktur

ml-lite/
├── ml_lite/
│   ├── __init__.py       # Öffentliche Paket-Schnittstelle
│   ├── linear.py         # Regressionsmodelle
│   ├── metrics.py        # MSE und R²
│   └── optimizer.py      # Gradientenabstieg
├── test/
│   └── test_linear.py    # Unit-Tests
├── pyproject.toml        # Paket- und Abhängigkeitsdefinition
├── test.py               # Ausführbare Demo
└── README.md

Einschränkungen

  • Es gibt keine Datenvalidierung, Skalierung oder automatischen Train/Test-Split.
  • Die Loss-Historie enthält nur den Fehler ohne Regularisierungsterm.
  • Die Modelle sind auf Verständlichkeit und kleine Beispiele ausgelegt; für reale Projekte empfiehlt sich beispielsweise scikit-learn.
  • Durch die zufällige Parameterinitialisierung und die fehlende Seed-Steuerung sind Ergebnisse nicht vollständig reproduzierbar.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ml_linear_lite-0.1.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ml_linear_lite-0.1.1-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file ml_linear_lite-0.1.1.tar.gz.

File metadata

  • Download URL: ml_linear_lite-0.1.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for ml_linear_lite-0.1.1.tar.gz
Algorithm Hash digest
SHA256 633f5e8505a57e0e62de8565720d517c735c5b3320d47f40573fdd88755b2121
MD5 61e5f7dad6304681130bf6610b3a8aa8
BLAKE2b-256 654002b050527ed71ef565d4ea02b1b14fb3df6324567aff20bc84899fa12b61

See more details on using hashes here.

File details

Details for the file ml_linear_lite-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ml_linear_lite-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for ml_linear_lite-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e01d5da8e62c1da761389c3ea2a22d41fc21d838c84f0cc308cf8b063e97f35f
MD5 0fb98a598cd4515acf81fe9418655c2f
BLAKE2b-256 b88e0da8ceba688ee02aa6339f0d7dd9cc4dcc3e015c60f4ccfdc9bbc7e485dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page