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 i potężny 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.5,2.0,0
-1.2,3.1,1
0.5,-0.5,0

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.2.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.2-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dipolar_network-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 d853564d20dbc26c89ea77e33e9dad1815e1c41fb1c4b403dd64707a4530f034
MD5 113835deb6698cef1d89e110d0d43264
BLAKE2b-256 6ca08cd7b1a97901f7304b63db1a0700864d88d0598fa1a616b89fcb8534cc44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dipolar_network-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cd9af235b0c1278c2cdddd3a9ede07d967ddf9a8f8ff1b0e7d8ed2339c24d4ca
MD5 7a885956e2d9a8976b7bdd98ca3cbe1b
BLAKE2b-256 bbbf630ad16eca856bbb761c37124ce59974e17545d429e41b6462465a9de5c3

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