Felhasználói dokumentáció
A programok Java nyelven készültek, ajánlatos a legújabb Java
Runtime Environment segítségével futtatni őket. Linux operációs rendszer
és Windows alatt egyaránt futtathatók. A programhoz készült egy Makefile
is. Linux alatt ez gond nélkül használható, Windows alatt szükségünk
lehet CygWin-re ( – illetve a make és rm parancsokra).
A program indítása
A program egyetlen paramétert vár a parancssorban, ez pedig a
konfigurációs file neve, ami leírja a további paramétereket:
- a bemeneti képfile neve (.png képformátumú),
- a klaszterező eljárás megadása, további paraméterei,
- a kimeneti képfile neve és mérete.
Pl. adjuk ki az alábbi parancsot a class file-okat tartalmazó
könyvtárban:
java -classpath . Main data/test1.average-link.cfg
Ennek eredménye:
Opening image: 'data/test1.in.png'...done.
Data count: 40
Running clustering algorithm 'average-link'...
....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Postprocessing...done.
Duration: 0s.
Saving to image: 'data/test1.average-link.png'...
cluster #0 data count: 21
cluster #1 data count: 19
done.
A felhasznált konfigurációs file: ../data/test1.average-link.cfg
A bemenő tesztkép: ../data/test1.in.png
Az eredményként adott kép: ../data/test1.average-link.png
Ebből már látható a program működése: beolvas egy képfile-t, ebben
megkeresi a nem fehér pontokat, és azokból lesznek a klaszterezendő
pontok. Ezekből létrehozza az előre megadott számú klasztert, és az
azonos klaszterbe eső pontokat azonos színnel, a különböző klaszterbe
eső pontokat különböző színnel kiszínezi, és elmenti a megadott
képfile-ba. Lehetőség van a pontok véletlenszerű választására is (nem
minden pont kerül kiválasztásra), ekkor a piros színű pontok kétszer
akkora valószínűséggel választódnak ki, mint a feketék. További
lehetőség, hogy zajt is lehet keverni a képhez.
A konfigurációs file
A konfigurációs file felépítése tömören (a szögletes zárójel
opcionális paramétert jelöl):
random_seed = int
input_type = random/image_direct/image_random
random esetén:
point_num = int
image_direct esetén:
input_file = filename
image_random esetén:
input_file = filename
point_num = int
[noise = float]
[data_file = filename
[data_size = int]]
algorithm_type = single-link/complete-link/average-link/CURE/ward
CURE esetén:
param_c = int
param_alpha = float
final_cluster_num = int
output_file = filename
[output_size = int]
Háromféle inputból választhatunk (input_type):
- random
- Véletlenszerűen generálunk megadott számú pontot. Ekkor meg kell
adni, hogy hány darab pontot generáljunk.
- image_direct
- Egy képfile-t beolvasunk, és a nem fehér pontjai lesznek a
klaszterezendő pontok. Egyetlen paraméter a képfile neve.
- image_random
- Egy képfile-t beolvasunk, és a nem fehér pontjaiból véletlenszerűen
választunk. További paraméterek a pontok száma, és hogy mennyi zajt
keverjen az inputhoz ( – a pontok ekkora hányada véletlen,
egyenletes eloszlású lesz a teljes tartományban).
random és image_random esetén
tudni szeretnénk, hogy pontosan milyen mintahalmazzal dolgozik a
program. Erre való a data szekció: kiirathatjuk a felhasznált
adathalmazt egy direct_image-nek megfelelő képként
– a minták fekete pontok a fehér háttéren. data_file és data_size a képfile
nevét és méretét adja meg.
- algorithm_type
- Itt választhatjuk ki, hogy a négyféle klaszterező eljárás közül
melyiket szeretnénk használni. CURE algoritmus esetén további két
paramétert kell megadnunk:
- param_c
- Az egyes klasztereket legfeljebb ennyi reprezentáns ponttal
ábrázolunk a klaszterek összevonásakor.
- param_alpha
- Minden klaszterösszevonás után zsugorítjuk a reprezentáns pontokat a
klaszterközéppont felé. Alfa a zsugorítás mértéke, a pont középponttól
mért távolsága ennyiszeresére változik. Szélső értékei: 1 esetén a
pontok helyzete nem változik, 0 esetén az összes pont a középpontba esik
össze.
- final_cluster_num
- Itt állíthatjuk be, hogy hány klaszterbe szeretnénk sorolni a
pontokat. (Addig vonja össze a klasztereket a hierarchikus algoritmus,
amíg számuk el nem éri a beállított értéket.)
Az output megadása az output_file és output_size paraméterekkel lehetséges, ezek a kimeneti
képfile nevét és méretét adják meg.
Makefile
A Makefile használata:
- make all
- Lefordul a program, és lefutnak a tesztek. Mivel a tesztek sokáig futhatnak,
ez az opció nem ajánlott.
- make test
- csak a tesztek futnak le
- make testX
- csak az X. teszt fut le, pl. ,,make test4''
- make clean
- töröl mindent, amit a ,,make all'' állított elő
- make Main.class
- lefordítja a programot.
További, kevésbé érdekes opciók a
Makefile-ban találhatók.
|