Skip to main content

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:

  1. Cecha 1 (współrzędna x)
  2. Cecha 2 (współrzędna y)
  3. 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"
        }
    ]
]

📄 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

dipolar_network-0.1.3.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

dipolar_network-0.1.3-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file dipolar_network-0.1.3.tar.gz.

File metadata

  • Download URL: dipolar_network-0.1.3.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.15.0a2

File hashes

Hashes for dipolar_network-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1a5fd04312bb17d0ae90dce21664508b1948923bb81e4a501db203ad403cd3a6
MD5 fc436edc47e7dde20ca52cc5948a91ba
BLAKE2b-256 0af4a63a20f50e7b470f03fb70d2e30e2569ba562cd4dbf42c84e0c7b32df657

See more details on using hashes here.

File details

Details for the file dipolar_network-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for dipolar_network-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 97f0a545b0ef9619dc441f5069379baa161c61a6b729ab2813d6ca5a13152a38
MD5 e15dca1e824b9a30bfbe5b53125acd8d
BLAKE2b-256 6ae8debfb8ce1b25578ca05111d169aed7f28364f11661d8e14f0af4cff7d0c0

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