Ebben a cikkben bemutatom, hogyan lehet megvalósítani egy alapvető Neurális hálózatot a Keras használatával.
A Keras egy nagyon felhasználóbarát Deep learning könyvtár, amely egyszerű és gyors prototípuskészítést tesz lehetővé. Konzisztens és egyszerű API-kat kínál, és minimálisra csökkenti a gyakori használati esetekhez szükséges felhasználói műveletek számát, valamint egyértelmű és használható visszajelzést ad felhasználói hibák esetén.
A bináris osztályozási feladathoz a „Pima indiánok cukorbetegségének adatkészletét” fogom használni. Az adatkészlet célja az adatkészletben szereplő bizonyos diagnosztikai mérések alapján diagnosztikailag megjósolni, hogy a páciens cukorbeteg-e vagy sem. 768 megfigyelés van 8 bemeneti változóval és 1 kimeneti változóval.
Először importáljuk az adatkészletet a .txt fájlból, és NumPy tömbbé konvertáljuk. Ez a következő módon történik:
Az adatkészlet importálása után el kell végeznünk az adatok előfeldolgozását, mielőtt végigfutnánk egy modellen. Az első nyolc oszlop X_dataként, az utolsó oszlop pedigY_data néven kerül tárolásra.
Az X_data tartalmazza a különböző minták nyolc jellemzőjét, az Y_data pedig a célváltozót tartalmazza. Ezek a változók tovább vannak osztva X_train, X_test, y_train, y_testa train_test_split függvény segítségével egy sci-kit-learn könyvtárból.
Az előfeldolgozás után az adatok készen állnak.
Most egy egyszerű neurális hálózatot építünk a Keras segítségével. Itt a szekvenciális modellt használtam.
A modell első rétegei 16 neuront tartalmaznak, amelyek az adatokból veszik a bemenetet, és alkalmazzák a szigmoidaktiválást. A második réteg egyetlen neuront tartalmaz, amely átveszi az előző réteg bemenetét, kemény szigmoid aktiválást végez, és az osztályozás kimenetét 0 vagy 1 értékre adja.
Most a modell készen áll; összeállítjuk. Itt a 'bináris keresztentrópia veszteség' és az SGD ("Stochastic gradient descent") optimalizálót használtam a fordításhoz. Az SGD tanulási rátája 0,5, lendülete 0,9.
Most az X_train és az y_train függvényeket használjuk a modell betanításához, és 100 korszakon keresztül futtatjuk. A képzés befejezése után a modellt X_test és y_test értékeli.
A modell kiértékelésekor veszteség = 0,57 és pontosság = 0,73
A legelterjedtebb osztály előrejelzésének alapteljesítménye körülbelül 65%-os osztályozási pontosság. A legjobb eredmények megközelítőleg 77%-os osztályozási pontosságot érnek el.
Viszonylag jobb hatékonyságot értünk el egy egyszerű neurális hálózattal, ha összehasonlítjuk az adatkészlet átlagos eredményeivel. Mélyebb hálózattal nagyobb pontosság érhető el.
Github link a notebookhoz: Intro_to_Keras_Basic.ipynb
Készítette a Google Colabban, Kaustubh Atey ([email protected])