League Beregner part 2

League Beregner part 2

Som du kan se i min tidligere post har jeg arbejdet med et projekt til league of legends hvor jeg bruger et Neuralt netværk til at bedømmet hvorvidst en person har spillet godt eller dårligt. I den udgave er det hele meget manuelt hvor jeg selv har defineret vores algoritme samt det neurale netværk og hvordan det lærer, vil jeg her bruge Keras biblioteket til at udfører den samme opgave, men gøre det på en mere simplificeret måde hvor det er nemt at foretage ændringer i det neurale netværk, så det er nemt at finde den bedste måde for netværket at trænes på.

Først gemmer vi vores datasæt som et numpy array

Her har jeg været nødt til at ændre nogle værdier da den algoritme jeg bruger i vores neurale netværk har svært ved at håndtere alt for store tal som gør at den ikke har mulighed for den at forbedre sig. i dette tilfælde har jeg ændret tallene for hvor meget skade folk har lavet fra f.eks. 7299 til 7.229.

Derefter inddeler vi vores datasæt i X værdier (features) og y værdier (labels)

Her kan det ses at jeg sætte de første 8 værdier til at være vores X værdier og vores sidste værdi til at være vores y værdier

derefter skal jeg så til at lave det neurale netværk, det gøres først ved at instansiere sequential objektet og lægge den i en variabel “model”

Sequantial klassen indeholder som er en del af keras biblioteket anvendes til at danne layers 

i ens neural netværk. 

derefter tilføjes der så Layers til det neurale netværk ved brug af model.add funktionen. Her bliver der tilføljet et Dense layer, det betyder et fully connected layer. Den første værdi bestemmer hvor mange hidden units layeret skal bestå af, derefter skal man ved det første layer angive input dimensionen, hvilket i dette tilfælde er 8 da vi har 8 forskellige features i vores datasæt, til sidst angiver vi aktiverings funktionen relu. I et neuralt netværk er en aktiverings funktion ansvarlig for at transformere summen af weighted input fra node til aktiviteten af en node eller output for en specifik input. RELU -> Rectified linear activation function er en lineær funktion som vil output selve inputtet direkte hvis den er positiv ellers vil den outputte 0. Det er en default aktiverings funktion for mange typer af neurale netværk fordi en model som bruger lige netop dette er nemmere at træne samt i mange tilfælde giver udmærket resultater.

I det sidste layer angiver mængden af hidden units hvor mange mulige outputs der er, så i dette tilfælde da der arbejdes med et binært output i 0 spillet godt og 1 spillet dårligt består det af en hidden unit her bruger jeg så aktiverings funktionen sigmoid som er en funktion der giver et output mellem – 1 og 1 hvilket er godt at bruge når man ligesom mig arbejder med binær output værdi da man kan bruge det til at give en god indikation hvor stor sandsynlighed der er for det er enten 0 eller 1.

Derefter skal det neurale netværk compiles

Det gøres ved at give en loss funktion, i dette tilfælde binary_crossentropy da output er binært. binary_crossentropy er en loss funktion opstillet i keras biblioteket. Derefter skal man angive en optimizer det er en funktion som bruges til at optimere læringsprocessen for det neurale netværk. Keras har mange forskellige optimerings funktioner at vælge imellem “adam” er den mest almindelige, men man kan prøve sig frem med lidt forskellige for at finde den der passer bedst til sit eget netværk. metrics angiver ud fra hvilke parametre det neurale netværk skal vurdere hvor godt det klare sig, jeg har valgt at bruge accuracy til at måle korrektheden i modellen, man kan også bruge andre metrics som precision, recall og mange flere.

Loss giver en ide om hvor langt man er fra det rigtige resultat, hvor optimizer funktionen bruger loss værdien til at optimere modellen

Til sidst skal jeg så fitte min model det gøres ved brug af keras .fit metode på min model.

Der angives X, som består af mine features, y mine labels (outputs), batch_size som definere hvor mange datapunkter der bruges til træning af gangen. Dette er meget nyttigt især hvis man arbejder med store mængder data da det kan optage rigtigt meget memory hvis man kører alle datapunkter på en gang, en anden fordel ved brug af batch_size er også at modellen optimalisere sig efter hver batch så man på den måde hurtigere rammer en høj accuracy.. derefter angives epochs, hvilket står for mængden af gentagelse hvor den træner igennem hele datasættet.

Sådan ser det ud når koden kører

Leave a comment

Design a site like this with WordPress.com
Get started