A library for constructing dipolar separating hyperplanes
Project description
Dipolar Network
Lekka i wydajna biblioteka Python do konstruowania Dipolowych Hiperpłaszczyzn Separujących (Dipolar Separating Hyperplanes). Biblioteka wykorzystuje algorytm konstruktywny do tworzenia odcinkami liniowych granic decyzyjnych dla zadań klasyfikacji binarnej.
Narzędzie oferuje zarówno czyste API w Pythonie do integracji z własnymi skryptami, jak również Interfejs Wiersza Poleceń (CLI) do szybkiego użycia w terminalu.
📦 Instalacja
Możesz zainstalować bibliotekę bezpośrednio z repozytorium PyPI:
pip install dipolar-network
🚀 Szybki Start (Terminal / CLI)
Po zainstalowaniu biblioteki, komenda dipolar-network jest dostępna globalnie w systemie. Pozwala ona na szybkie trenowanie sieci na plikach CSV i eksportowanie wyników do formatu JSON.
Podstawowe użycie
Wytrenuj sieć na pliku dane.csv i zapisz parametry modelu do wyniki.json (używając domyślnych ustawień):
dipolar-network dane.csv wyniki.json
Użycie zaawansowane
Dostosuj proces treningu, definiując maksymalną liczbę warstw, neuronów oraz limity czasowe i dokładność:
dipolar-network dane.csv model.json -l 5 -n 8 -t 15.0 -a 0.98
Dostępne argumenty:
| Argument | Flaga (Skrót) | Typ | Domyślnie | Opis |
|---|---|---|---|---|
| Input CSV | (Pozycyjny) | str |
Wymagane | Ścieżka do pliku wejściowego z danymi (.csv). |
| Output JSON | (Pozycyjny) | str |
Wymagane | Ścieżka, gdzie zostanie zapisany wynikowy plik (.json). |
| Layers | -l, --layers |
int |
3 |
Maksymalna liczba warstw (głębokość sieci). |
| Neurons | -n, --neurons |
int |
10 |
Liczba neuronów na jedną warstwę. |
| Time Limit | -t, --time |
float |
10.0 |
Limit czasu obliczeń na jedną warstwę (w sekundach). |
| Accuracy | -a, --accuracy |
float |
1.0 |
Docelowa dokładność treningu (wartość od 0.0 do 1.0). |
🐍 Użycie w kodzie Python (API)
Bibliotekę można łatwo zintegrować z istniejącym kodem w Pythonie, np. w ramach analizy danych w Jupyter Notebook.
import numpy as np
from dipolar.network import DipolarNetwork
# 1. Przygotowanie danych
# X: macierz cech (współrzędne punktów)
# y: wektor etykiet (0 lub 1, ewentualnie -1 lub 1)
X = np.array([[1.2, 3.4], [2.1, 0.5], [-1.0, 2.2]])
y = np.array([0, 0, 1])
# 2. Inicjalizacja modelu
# Konfigurujemy maksymalną strukturę sieci
model = DipolarNetwork(max_layers=5, neurons_per_layer=3)
# 3. Trening
# time_limit określa czas (w sekundach) na optymalizację jednej warstwy
model.fit(X, y, time_limit=5.0, target_accuracy=1.0)
# 4. Pobranie parametrów modelu
# Zwraca listę warstw z wagami, biasem i sformatowanym równaniem
params = model.get_parameters()
# 5. Wyświetlenie struktury
for i, layer in enumerate(params):
print(f"Warstwa {i+1}:")
for neuron in layer:
print(f" -> {neuron['equation']}")
📂 Formaty danych
Plik wejściowy (CSV)
Biblioteka oczekuje pliku tekstowego oddzielonego przecinkami. Plik może (ale nie musi) zawierać nagłówka. Wymagane są co najmniej 3 kolumny:
- Cecha 1 (współrzędna x)
- Cecha 2 (współrzędna y)
- Etykieta klasy (-1/1)
Przykład (dane.csv):
x1,x2,label
-1.96163,-0.89869,-1.00000
-0.52919,0.66772,-1.00000
2.34700,0.81597,1.00000
1.51935,0.59442,1.00000
Plik Wynikowy (JSON)
Plik wyjściowy zawiera pełną matematyczną definicję granic decyzyjnych. Dane są zorganizowane jako lista warstw, gdzie każda warstwa zawiera listę neuronów (hiperpłaszczyzn).
[
[
{
"weights": [0.95, 0.09],
"bias": -0.12,
"equation": "0.950x + 0.090y + -0.120 = 0"
}
],
[
{
"weights": [-0.5, 1.2],
"bias": 0.5,
"equation": "-0.500x + 1.200y + 0.500 = 0"
}
]
]
🔄 Historia Zmian
v0.2.2 (06/01/2026)
- 🖥️ Ulepszone CLI: Terminal po zakończeniu treningu wyświetla teraz faktyczną skuteczność i czas, zamiast ogólnego komunikatu o sukcesie.
v0.2.1
- 📊 Rozszerzone raportowanie: Plik JSON zawiera teraz szczegółowe statystyki (czas, dokładność %) oraz informacje o danych (liczba próbek, liczebność klas).
- 🔧 Refaktoryzacja: Centralizacja logiki statystyk wewnątrz klasy
DipolarNetwork(ułatwia integrację z GUI). - 📝 Lepsze formatowanie: Poprawiono generowanie napisów równań (obsługa znaków +/- i dodanie symbolu mnożenia
*).
v0.2.0
- 🎉 Dodano obsługę N-wymiarowych danych (nie tylko 2D!).
- 🐛 Naprawiono błąd z metodą
predictw klasie Neuron. - ✨ Nowe formatowanie równań (np.
0.5*x1 - 0.2*x2...). - 📂 Automatyczne wykrywanie liczby kolumn w pliku CSV.
v0.1.2
- Dodano obsługę terminala (CLI).
📄 Licencja
Ten projekt jest udostępniany na licencji MIT License.
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
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 dipolar_network-0.2.2.tar.gz.
File metadata
- Download URL: dipolar_network-0.2.2.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcc829c4588369f6f737ed382bcd0700009413fd2cd319821cb6ac3766d7187b
|
|
| MD5 |
7a15ffbb55c01981730fc83644c9f272
|
|
| BLAKE2b-256 |
c9151c620907be65ac66278fcbccd48a654223e147dd0e282584984e6c7a39d9
|
File details
Details for the file dipolar_network-0.2.2-py3-none-any.whl.
File metadata
- Download URL: dipolar_network-0.2.2-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f2ca884520c8c35cd145a770d9f7bf2c9daf6d9af97a782d0304a80e67e77fe
|
|
| MD5 |
46adbc5fc13d0144bdb6652402d107df
|
|
| BLAKE2b-256 |
fb5557b08fc87cc440659f807dae550548bb29207479b74637dd8fab48688dce
|