Pentru a avea o imagine mai clară asupra funcționalităților cerute în specificare vom crea tabelul de evenimente pentru aplicație. Acesta arată în felul următor:
Subiect
|
Verb
|
Obiect
|
Frecvență
|
Utilizator
|
încarcă
|
set de date
|
o dată pe rulare
|
Utilizator
|
generează
|
tabel de corelație
|
o dată pe rulare
|
Utilizator
|
setează
|
parametrii generali
|
4-10 ori pe rulare
|
Utilizator
|
setează
|
parametrii tehnicii alese
|
4-10 ori pe rulare
|
Utilizator
|
antrenează
|
modelul selectat
|
4-10 ori pe rulare
|
Utilizator
|
testează
|
modelul obținut
|
4-10 ori pe rulare
|
Utilizator
|
salvează
|
rezultatele
|
4-10 ori pe rulare
|
Figura . Tabelul de evenimente
Identificând evenimentele din specificarea problemei și având tabelul de evenimente, putem vedea mai clar cazurile de utilizare care trebuie să apară în aplicație. În continuare, vom prezenta diagrama de cazuri de utilizare dedusă din specificarea problemei.
Figura . Diagrama cazurilor de utilizare
5.3.Proiectare
În această secțiune se va descrie modul în care a fost gândită aplicația și deciziile de proiectare luate pentru a asigura o implementare cât mai ușoară a funcționalităților din specificație. Aplicația va fi proiectată în ideea programării orientate pe obiecte.
5.3.1.Modelul de date
Având în vedere faptul că aplicația trebuie să proceseze orice set de date care respectă condițiile din specificație, avem nevoie de un pachet de clase care să reprezinte concepte cât mai abstracte, astfel încât să modeleze orice set de date valid.
Avem următoarele clase:
-
Variable – reprezintă o variabilă din setul de date. Conține următoarele informații: numele variabilei, id, valoarea minimă și valoarea maximă a acesteia.
-
Value – reprezintă o valoare a unei variabile într-un exemplu de date.
-
DataSample – reprezintă un exemplu de date din cadrul unui set de date. Conține câte o valoare pentru fiecare variabilă din set.
-
DataSet – reprezintă un set de date. Conține un nume, o descriere a setului de date, o listă de obiecte de tip Variable și o listă de obiecte de tip DataSample.
-
Problem – reprezintă o problemă de învățare asupra unui set de date. Are ca atribute: setul de date, un set de variabile care vor fi date de intrare, o variabilă care va fi dată de ieșire, numărul de exemple precedente care trebuie luate în considerare pentru datele de intrare în model, numărul de subseturi în care se împart datele de antrenament pentru cross-validation și indicele subsetului care nu va participa la antrenament.
-
LearningModel – interfață care declară metodele pe care ar trebui să le definească o clasă care implementeaƶă o tehnică de învățare pentru a fi folosită în aplicatie.
-
AbstractLearningModel – clasă abstractă care implementează o parte din metodele declarate de interfața LearninModel, care sunt comune pentru toate modelele implementate în aplicație.
Diagrama claselor din model este următoarea:
Figura . Diagrama claselor din modelul de date
Fișierul cu setul de date trebuie să fie într-un format ușor de citit de către o aplicație. S-a decis asupra formatului XML. Schema XSD a unui fisier XML care conține un set de date este următoarea:
"1.0" encoding="UTF-8"?>
"http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.scs.ubbcluj.ro/~gmir0757/DataSetSchema"
xmlns:tns="http://www.scs.ubbcluj.ro/~gmir0757/DataSetSchema"
elementFormDefault="qualified">
"dataset">
"name" />
"description" />
"variables">
"variable" minOccurs="1" maxOccurs="10">
"id" type="xs:string" />
"name" type="xs:string" />
"minValue" type="xs:double" />
"maxValue" type="xs:double" />
"samples">
"sample" minOccurs="1" maxOccurs="unbounded">
"value" minOccurs="1" maxOccurs="10">
"varId" type="xs:string" />
"val" type="xs:double" />
Un exemplu de fișier care descrie un set de date ar fi următorul:
"1.0" encoding="UTF-8" standalone="no"?>
Daily weather indicators for Cluj-Napoca.
Daily values for the most important weather indicators for Cluj-Napoca, from 1952 to 2011.
"1" maxValue="366" minValue="1" name="Day index"/>
"2" maxValue="90" minValue="-30" name="Mean temperature"/>
"3" maxValue="90" minValue="-30" name="Minimum temperature"/>
"4" maxValue="90" minValue="-30" name="Maximum temperature"/>
"5" maxValue="90" minValue="-30" name="Dew point"/>
"6" maxValue="20.0" minValue="0.0" name="Wind speed"/>
"7" maxValue="2.0" minValue="0.0" name="Precipitation level"/>
"2" varId="1"/>
"31.0" varId="2"/>
"27.0" varId="3"/>
"36.0" varId="4"/>
"30.0" varId="5"/>
"0.0" varId="6"/>
"0.0" varId="7"/>
"3" varId="1"/>
"30.5" varId="2"/>
"28.0" varId="3"/>
"34.0" varId="4"/>
"24.8" varId="5"/>
"16.2" varId="6"/>
"0.05" varId="7"/>
...
5.3.2.Tehnicile de învățare
Aplicația trebuie să implementeze trei tehnici de învățare: rețele neuronale de tip feed-forward with backpropagation, programare genetică și mașini cu suport vectorial de tip ε-SVR. Și luând în considerare parametrii care se cer a fi configurabili din aplicație, avem următoarea ierarhie de clase:
Figura . Diagrama claselor care implementează tehnicile de învățare
Dostları ilə paylaş: |