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
- Voraussetzungen und Installation
- Schnellstart
- API-Übersicht
- Metriken
- Tests und Demo
- Projektstruktur
- Einschränkungen
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 Wert0.r2(y, y_pred)berechnet R². Bei perfekten Vorhersagen ist der Wert1; 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
633f5e8505a57e0e62de8565720d517c735c5b3320d47f40573fdd88755b2121
|
|
| MD5 |
61e5f7dad6304681130bf6610b3a8aa8
|
|
| BLAKE2b-256 |
654002b050527ed71ef565d4ea02b1b14fb3df6324567aff20bc84899fa12b61
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e01d5da8e62c1da761389c3ea2a22d41fc21d838c84f0cc308cf8b063e97f35f
|
|
| MD5 |
0fb98a598cd4515acf81fe9418655c2f
|
|
| BLAKE2b-256 |
b88e0da8ceba688ee02aa6339f0d7dd9cc4dcc3e015c60f4ccfdc9bbc7e485dd
|