Python telepítés mesterséges intelligencia programozásához

Python telepítés mesterséges intelligencia programozásához

Bevezetés

Annak érdekében, hogy hatékonyan tudjuk dolgozni mesterséges intelligencia algoritmusokkal, mindenképpen szükségünk van olyan program használatára, melynek segítségével Python programot tudunk készíteni. Ahogy korábban bemutattam a Python telepítés nem kötelező elem, a Google rendszeréből online is tudunk programokat készíteni.

Azonban a Colab alkalmazása is jelenthet szűk keresztmetszetet, illetve komolyabb projektek esetén sokkal gyorsabb a saját gépen történő kódolás. A Python, mint programozási környezet többféle módon telepíthető, több, különböző program letöltésével képesek lehetünk elkészíteni a saját programunkat.

Ebben a cikkben szeretném bemutatni a Python telepítés legegyszerűbb és leghatékonyabb módját, abban az esetben, ha adatokkal szeretnénk dolgozni. A Python napjaink legjobb programozási nyelve, ha gyűjtött vagy már rendelkezésre álló információk alapján szeretnénk döntést hozni.

A Python telepítés és használat esetében többféle megoldandó feladattal is szembesülhetünk, ezért javaslom a lenti folyamatot alkalmazni kezdők és a Python “lelkét” kevésbé ismerők számára.

Alapvetően a Python telepíthető önmagában is, de ilyen esetben a kiegészítő könyvtárak, melyek a mesterséges intelligencia legfontosabb eszközeit tartalmazzák, sokkal körülményesebb módon használhatók. Erre a problémára ad egy közel tökéletes megoldást az Anaconda program.

Anaconda, te vagy a legjobb

A kezdők és haladók számára is az egyik legjobban ajánlott programcsomag az Anaconda Distribution. Ennek a nyílt forráskódú programcsomagnak köszönhető lehet kivitelezni a Python telepítését és használatát a legegyszerűbb módon.

Maga a program minden fontos platformon (Windows, Mac, Linux) elérhető és már több mint 11 millió felhasználója van már. Ki lehet jelenteni azt is, hogy iparági sztenderddé vált a fejlesztések, tesztelés és gépi tanulás alkalmazására. Közel 1500 darab különböző kiegészítő csomag elérhető hozzá, és a programcsomagok letöltése, telepítése és eltávolítása is egyszerűen végrehajtható a program segítségével.

Gépi és mély tanulás alkalmazásához használható a például scikit-learn, Tensorflow vagy Theano csomag, adatanalízishez pedig például a NumPy vagy a pandas könyvtár. Alapvetően, a végrehajtás szempontjából az Anaconda Python hatékonyabban dolgozik, mint más Python kernelek (pl. Vanilia) és grafikus telepítési opcióval gyorsan el lehet kezdeni a programozást. Ha Windows környezetben dolgozunk és szeretnénk saját magunk megválasztani, milyen könyvtárakat használunk (egyszerű telepítés, frissítés vagy törlés), szinte az egyetlen használható opció most a piacon.

Nagyon fontos szempont, hogy ingyenesen letölthető és használható, annak ellenére, hogy egy komoly vállalat (Anaconda Inc.) folyamatosan fejleszti és ezáltal a legkomplexebb Python programozási opciónak alakítja az Anacondát.

Kiemelendő az a tény is, hogy a csomagmenedzser alkalmazás még nem tökéletes. Sok esetben manuálisan szükséges a programcsomagok frissítése, amely folyamat viszonylag sok időt vesz igényben. Emellett az Anaconda nem minden esetben használja a legfrissebb csomag verziókat (például Tensorflow esetében) és sajnos a Google nem támogatja hivatalosan az Anaconda Python-t.

A hátrányok mellett, beszélni kell arról, hogy az Anaconda esetében nincs szükség extra energiát fordítani arra, hogy ellenőrizzük melyik verziójú könyvtár, melyik verziójú könyvtárral kompatibilis, ezt a program telepítések közben automatikusan megteszi és a frissítések során minden esetben a legjobb kombinációt telepíti a számítógépünkre.

Python telepítés – kígyózzunk!

Ha használni szeretnénk, nincs más dolgunk, hogy az anaconda.com oldalra látogassunk el. Itt a Download (Letöltések) menüpont alatt tudjuk kiválasztani, milyen operációs rendszerre (Windows esetében fontos, hogy 32 vagy 64 bit-es rendszerünk van) szeretnénk telepíteni.

Anaconda.com letöltési felülete.
Anaconda.com letöltési felülete.

A Windows verziójának ellenőrzését a Sajátgép – jobb egérgomb – tulajdonságok ablakban tudjuk megtenni.

Windows bit verzió megállapítása a Sajátgép - Tulajdonságok menüpont alatt.
Windows bit verzió megállapítása a Sajátgép – Tulajdonságok menüpont alatt. “Rendszer típus” vagy “System type” soron.

Windows-os felhasználók esetében, érdemes a grafikus telepítési opciót választani. Mivel a Python 3.7-es verziója újabb, mint a 2.7-es, értelemszerűen azt érdemes használni. Előfordul néhány alkalmazás vagy könyvtár, amely a 2-es verziót preferálja, de ezek folyamatosan kopnak el.

A legtöbb alkalmazás tökéletesen kompatibilis a 3-as verzióval és sajnos van egy-két apró szintaktikai különbség a két verzió között. Az időben előre tekintve, mindenképpen a 3.7-es verzió megismerése javasolt a jelen pillanatban.

Nagyon fontos, hogy a letöltésnél ki kell választani az operációs rendszert (Windows / Mac / Linux) és a megfelelő 32 vagy 64-bit-es grafikus installációs opciót, a Windows-ra történő telepítés előtt.

Az Anaconda lehetséges telepítési opciói a Python verziókat figyelembe véve.
Az Anaconda lehetséges telepítési opciói a Python verziókat figyelembe véve.

A telepítés nagyon egyszerűen, Windows-os grafikus alkalmazás segítségével végezhető el. Kissé hosszú ideig tart maga a folyamat, mert viszonylag összetett, több előre telepített kiegészítő könyvtár is másolásra kerül a számítógépre. A telepítés után az Anaconda Navigator felületet lehet elindítani, itt láthatjuk, milyen előre előkészített alkalmazásokat használhatunk.

Anaconda Navigator kezdő felülte.
Anaconda Navigator kezdő felülte.

Itt található a népszerű Jupyter notebook, valamint a Spyder programozó környezet. A programok futtatását a Anaconda Navigator-on belül, vagy a Start menüben, önállóan is el lehet végezni.

Anaconda Prompt – hogy is van ez?

Az Anaconda Prompt a környezet rendszerparancssora. Itt oldható meg a legegyszerűbben a telepített könyvtárak frissítése és újak telepítése. Ki kell emelni, hogy sok esetben, az egyes Python könyvtárak verziói nem működnek együtt. Például a Numpy (mátrix műveletekhez használt könyvtár) 1.1-es verziója csak az Opencv (gépi látás könyvtár) 1.2-es verziójával tud együtt dolgozni, míg az Opencv legfrissebb verziója a 1.3 (A verziószámok most csak kitalált példák).

Az Anaconda Prompt felülete.
Az Anaconda Prompt felülete.

Ilyen esetben az Anaconda figyeli az kapcsolatokat a könyvtárak között és ha már telepítve van a Numpy egység, az Opencv telepítés parancsának kiadása esetén nem a legújabb verziót, hanem a számítógépen lévő könyvtárakkal tökéletesen együttműködő variánst tölti le számunkra.

Talán kicsit bonyolultan hangzik, de annyit érdemes megjegyezni, hogy Anaconda környezetben bármely könyvárat telepíthetjük, nem kell figyelnünk a kompatibilitásra.

Az Anaconda Prompt-ot a start menübe begépelve tudjuk indítani, gyakorlatilag pontosan úgy néz ki, mint a Windows beépített parancssora (base kezdetű programsorok). Értelemszerűen a beépített parancsok segítségével tudunk műveleteket elvégezni. Például a telepített könyvtárak listáját a conda list begépelése után válik láthatóvá.

Anaconda Prompt - Python telepített könyvtárak listája.
Anaconda Prompt – Python telepített könyvtárak listája.

Ahogy egy korábbi cikkben említettem, az Anaconda programcsomag részét képezi a Spyder alkalmazás, melyet a továbbiakban Python kódolásra fogunk használni.

Összefoglalás

A cikkben bemutattam az Anaconda szoftverkörnyezet főbb tulajdonságait és az offline Python program telepítésének a programozásának előnyeit.

Az Anaconda segítségével könnyedén tudunk mesterséges intelligencia alkalmazását megoldani: rendelkezésre állnak a legújabb kiegészítő könyvtárak és a Spyder programozási felület. A továbbiakban bemutatom, hogy lehetséges újabb Python könyvtárakat telepíteni és konkrét, összetett feladatok megoldása is következik majd.

Python programozás legjobb offline és online eszközei

Python programozás legjobb offline és online eszközei

A Python programozás népszerűsége továbbra is töretlen. Bemutatom milyen alkalmazásokat érdemes használni a mesterséges intelligencia programozása során.

Python programozás helyzete

A Python mára a legnagyobb felhasználói bázissal rendelkező és legismertebb kódolási nyelv lett a világon. Ennek nem csak a mesterséges intelligencia és a gépi tanulás elterjedése az oka, hanem hogy számos előnnyel rendelkezik, beszéljünk web programozásról, vagy alkalmazás készítésről. Sok helyen a kódolás Svájci bicskájának is nevezik.

A Stackoverflow (egy platform ahol amatőrök és profik tesznek fel és válaszolnak meg programozással kapcsolatos kérdéseket) nemrég tette közzé, a programozási nyelvekkel kapcsolatos felmérését. Nagyon egyszerűen, a regisztrált felhasználókat kérdezték meg, mit gondolnak az egyes nyelvekről. Közel 180 országból, majdnem 90 000 fejlesztő töltötte ki a felmérést.

A Stackoverflow minden évben elkészíti a felmérést, amelyből kiderülnek az egyes programozási nyelvek népszerűségi és használhatósági eredményei.
A Stackoverflow minden évben elkészíti a felmérést, amelyből kiderülnek az egyes programozási nyelvek népszerűségi és használhatósági eredményei.

Ha általánosságban nézzük, a legtöbb kérdést az oldalon a Python-nal kapcsolatban teszik fel, megelőzve a JavaScrip-et. A kérdőív alapján a felhasználók majdnem 75%-a szereti a Python nyelvet (2. helyezett összesítve) és véleményük szerint ez a legkeresettebb kódolási nyelv is.

A mesterséges intelligencia és adattudomány körében a korábbi időszakban a R nyelv sokkal nagyobb népszerűségnek örvendett. Azonban inkább statisztikai és ábrázolástechnikai szempontból van előnye a Python-hoz képest. A Python sok könyvtárral rendelkezik az adatok manipulálásához, sokkal nyitottabb és rugalmasabb nyelv. Könnyen megtanulható és használható mindenki számára.

Következzen a három legismertebb program, amelynek segítségével programozni tudunk a kígyós (Python, mint piton) nyelven.

Google Colab – online mindenes

A Google Colab az egyik legnépszerűbb alkalmazás, a Jupyter notebook tervezési és működési rendszerén nyugszik. A nagy előnye, hogy nem szükséges alkalmazást letölteni vagy telepíteni a számítógépre, hanem online elérhető. A használata ingyenes, csak egy Google fiók szükséges hozzá. A Google Drive tárhelyen tudjuk létrehozni, tárolni és le- vagy feltölteni a .ipynb fájlokat, amelyeket a Colab használ.

A Jupyter és a Colab logója. A Colab a korábban fejlesztett Jupyter Notebook működési rendszerét használja. Forrás.
A Jupyter és a Colab logója. A Colab a korábban fejlesztett Jupyter Notebook működési rendszerét használja. Forrás.

A programok futtatása és a számítási folyamatok felhőben, a Google szerverein történnek. Így nagyobb feladatok esetén sincs szükségünk hatalmas számítási teljesítménnyel rendelkező számítógépre, megoldja helyettünk a Google a feladatot. Képfeldolgozás, gépi látás vagy mély tanulás (deep learning) alkalmazása esetén lehetőségünk van GPU (Tesla K80 GPU) vagy TPU (tensor process unit) ingyenes használatára is. Ez a segítség meggyorsítja a nagy számítási igényt jelentő programok futtatási sebességét.

A Google Colab-ban lehetőségünk van TPU (tensor process unit - tenzor feldolgozó egység) használatára, amely a mesterséges intelligencia tenzor struktúrájú problémáit a leggyorsabban oldja meg Python programozás során.
A Google Colab-ban lehetőségünk van TPU (tensor process unit – tenzor feldolgozó egység) használatára, amely a mesterséges intelligencia tenzor struktúrájú problémáit a leggyorsabban oldja meg Python programozás során.

Rengeteg mesterséges intelligencia és gépi tanulás könyvtár elérhető benne, és lehetőségünk van extrák telepítésére is. Gyakorlatban egy ideiglenes tárhelyre lehet feltelepíteni további könyvtárakat és kilépésig használni azokat. Egy korábbi cikkben bemutattam én is a Colab használatát és plusz könyvtárak telepítését.

Gyakran használom az alkalmazást, mert megoszthatom a projekteket, kommentet lehet tenni más munkájához, emellett prezentációkat is lehet építeni. Probléma nélkül lehet a kódsorba beilleszteni képeket és szövegeket, ezért például oktatási célokra is kiválóan használható. A Mesterin Start tanfolyam programozási feladatát is Google Colab programban mutatom be.

Anaconda / Spyder – aki nem piton…

Az Anaconda egy nagyon könnyen használható Python környezet, mely ma már a mesterséges intelligencia alkalmazás igényeire lett szabva. Lehet kódolni (Spyder) vagy Jupyter notebookon dolgozni a program segítségével. Könnyen kezelhetők a Python könyvtárak, telepíthetők és eltávolíthatók grafikus vagy parancssor jellegű felületen is.

Anaconda, a világ legnépszerűbb Python / R adattudományi, mesterséges intelligencia platform. Legalábbis a felhívás ezt mondja.
Anaconda, a világ legnépszerűbb Python / R adattudományi, mesterséges intelligencia platform. Legalábbis a felhívás ezt mondja.

Az Anaconda használható Python 2 és Python 3 környezetben is, könnyen telepíthető és több platformon elérhető (OSX, Linux, Windows). Nehézséget jelenthet, hogy meg kell szokni a használatát, egyes könyvtárak nem minden esetben működnek az első telepítéskor. Illetve, mivel mindent a saját tárhelyen tárolunk és futtatunk, szükség van egy komolyabb számítógépre és jó pár GB szabad tárhelyre.

Az Anaconda platformon alapesetben elérhető Python programozási könyvtárak. Ezeket természetesen törölni is lehet, az újak telepítése is könnyen megoldható.
Az Anaconda platformon alapesetben elérhető Python programozási könyvtárak. Ezeket természetesen törölni is lehet, az újak telepítése is könnyen megoldható.

Kezdőknek mindenképpen ajánlható az Anaconda, mert csak egy programot kell telepíteni és szinte az összes gépi tanulás könyvtár (pl. Pandas, Sklearn, Tensorflow) használható. Lehet jegyzetelni Jupyter-ben és kódolni mellette Spyder-ben.

A Spyder egy nyílt forráskódú környezet, mely integrálja az adattudomány alapvető könyvtárait (NumPy, SciPy, Matplotlib). Az grafikus felület nagyon hasonlít a RStudio-hoz.

Anaconda Spyder Python programozási környezet (itt tanultam meg a mesterséges intelligencia alapjait, de nekem nem a kedvencem).
Anaconda Spyder Python programozási környezet (itt tanultam meg a mesterséges intelligencia alapjait, de nekem nem a kedvencem).

A program az alábbi linken ingyenesen letölthető.

Sublime text – a személyes kedvenc

Nagyon hosszú ideig használtam a Spyder a programok elkészítéséhez. De nem szerettem, hogy nincsenek jó színkiemelések valamint túl bonyolult az elrendezés és túl sok információt tesz a felhasználó elé.

Véletlenül, egy videóban láttam meg a Sublime Text programot és tesztelése után soha többet nem indítottam el a Spyder-t. A program egy kis erőforrásigényű program szerkesztő, mely extra szolgáltatásokkal is rendelkezik.

A Sublime Text felhasználói felülete. Ismeri a Python parancsokat, így gyorsan és könnyen átláthatóvá válik a kód.
A Sublime Text felhasználói felülete. Ismeri a Python parancsokat, így gyorsan és könnyen átláthatóvá válik a kód.

Ismeri a Python parancsokat és teljes mértékben a saját programozási igényre lehet szabni a beállításokkal. Csak egy kódolás és egy visszacsatolási felülettel rendelkezik, így könnyen átlátható és gyorsan megtanulható a használata.

Nagyon fontos, hogy ingyenesen letölthető és minden platformon (Windows, OSX, Linux) használható. Mivel csak egy programszerkesztő, a mesterséges intelligencia könyvtárakat külön kell beszerezni mellé.

A legegyszerűbb módszer, ha az Anaconda letöltött és telepített könyvtárait betallózva használjuk például a gépi tanulás, vagy adattudományi eszközöket. A két program összekötéséhez többféle leírást is lehet találni az interneten.

A Sublime Text 3 az alábbi linken ingyenesen letölthető.

Összefoglalás

Aki manapság az adattudomány vagy a mesterséges intelligencia világába szeretne érvényesülni, nem tudja elkerülni a Python nyelvet. Említettem már milyen könnyen elsajátítható a használata és milyen további előnyökkel rendelkezik, azonban egy nyelv tanulása során a legfontosabb milyen grafikus felületet látunk, az alkalmazás mennyire segíti a munkánkat.

Bemutattam pár lehetőséget, felsorolva az általam vélt előnyöket és hátrányokat, remélem tudtam iránymutatást adni. Ezután mindenki saját ízlése szerint válasszon a lehetséges alternatívák közül.

Idősor alapú előrejelzés gépi tanulás segítségével Colab platformon

Idősor alapú előrejelzés gépi tanulás segítségével Colab platformon

Személy szerint mindig akkor kezdek el hinni valamiben, ha megfelelő leírások alapján saját adatokkal, saját motivációval azt a valamit le tudom tesztelni. Ezt első alkalommal a Mesterin-en, most fogjuk megtenni egy gépi tanulás példával:

múltbeli, idősor alapú (tőzsdei) adatok alapján fogunk előrejelzést készíteni, Python programozási nyelvben, Google Colab platformon.

Amennyire bonyolultnak tűnik első olvasatra, annyira lesz egyszerű a megvalósítása.

Kiemelném, hogy nem biztos, 100%-os módszert akarok adni, hogy lehet tőzsdei árfolyamokat előrejelezni, hanem a sokak által ismert, könnyen hozzáférhető adatokkal szeretnék dolgozni.

Idősor alapú adatok

Idősor alapú adatokról abban az esetben beszélünk amikor a statisztikai megfigyelések elemeit egymás követő időpontokban vagy időszakokban tesszük és ez a fajta időbeliség az adatok fontos tulajdonsága.

Szóval, ha 30 napon keresztül, minden reggel 8:00-kor feljegyezzük a lakás egy megadott pontján lévő hőmérő által mutatott értékek, és ezt táblázatos vagy diagramos formátumban tesszük, idősor alapú adatokról beszélünk. Nagyon fontos, hogy csak akkor értelmezhető jól az adatsor amikor a mintavételezések értéke mellé az adott dátumot is feljegyezzük, mert így állíthatóak időrendbe az értékek.

Egyéb példák lehetnek:

  • hipermarket napi bevételének adatsora,
  • munkanélküliségi ráta negyedéves adatsora,
  • vonat járat utasainak száma óránként,
  • ipari termelés és értékesítés negyedéves adatsora,
  • cég tőzsdei árfolyamának napi záróértékei.
Magyarországi ipari termelés és értékesítés idősori diagramja. Forrás: KSH.

Előrejelzés idősor alapú adat alapján

Ha képbe kerültünk az idősor alapú adatok fő tulajdonságaival, érdemes szót ejteni arról, hogy milyen lehetőségeink vannak az adatok alapján előrejelzést tenni.

Elsőként az átlag, medián fogalmak juthatnak eszünkbe: átlag a számértékek összege, osztva az összeadott számok számával, míg a medián a számértékek növekvő sorba rendezése után a középső elem, vagy páros számú elem esetén a két középső elem átlag.

Ezek jól hangzanak, de mi van abban az esetben, amikor például ránézünk az OTP árfolyam 2018-as napi záró értékeinek diagramjára?

Az OTP részvény napi záróértékei a 2018-as évben.
Az OTP részvény napi záróértékei a 2018-as évben.

Kékkel ábrázoltuk a napi árfolyamot és narancssárga vonallal az átlag értéket. Ha feltesszük a kérdést, valószínűleg melyek a 2019.01.01-ét követő tőzsdei záró érték, valószínűleg nem a sárga pontot jelölnénk meg.

Tudhatjuk, hogy az árfolyam nem mindig az áltag érték felé mozog el, lehetnek benne szezonalitások (visszatérő tendenciák), így emiatt szinte lehetetlen egyszerű leíró statisztikával előre jelezni az árfolymot.

Érzékeltetni szerettem volna, hogy a konvencionális statisztikai megoldások alkalmazásával nem lehet bonyolult rendszereket pontosan és jól leírni. Ilyen esetben érdemes a összetettebb matematikai stuktúrát, a gépi tanulás eszközeit igénybe venni.

Tőzsdei adatok letöltése

A példánkban tőzsdei adatokat fogok használni. A letöltéshez a BÉT (Budapesti Értéktőzsde) honapjára kell ellátogatni (link), ahol következő felület fogad minket.

A BÉT adatletöltési felülete.
A BÉT adatletöltési felülete.

Itt lehetőség van beállítani az időszakos bontást, az adott időszakot, az adatformát és az adat típusát. Mi most a 2015.01.01-től 2019.01.18-ig terjedő időszak, napi záró adataival fogunk dolgozni és vesszővel ellátott (*.csv, comma separated value) formátumot használunk.

Továbblépve, az “Azonnali piac” részen a “Részvények Prémium” lehetőséget kell kiválasztani, valamint egy instrumentumra rámutatni. A példában most az OTP árfolyammal fogok dolgozni. Ha minden beállítással végeztünk, a letöltés gombbal van lehetőség az adatok mentésére.

A kiválasztott insturmentum letöltése.
A kiválasztott insturmentum letöltése.

A letöltött fájlt eztán jegyzettömb vagy táblázatkezelő alkalmazással meg tudjuk nyitni. Miután megtettük, az alábbi kép fogad minket.

A táblázatkezelőbe betöltött csv fájl egy része.

A táblázatkezelőbe betöltött csv fájl egy része.

A CSV fájl formátum egy népszerű módja az adatok tárolásának, ugyanis nincsenek elválasztó tabulátorok az adatok között, csak a vessző értékek jelölik az értékek elválasztását.

Esetünkben 4 oszlop és 1010 sor szerepel a letöltött fájlban (mivel hétvégén nincs nyitva a tőzsde, azokra és az ünnepnapokra nincs jegyzett érték). Az első oszlop az instrumentum nevét jelöli, míg a második oszlopban találhatóak a dátum értékek. A dátumok és a hozzá kapcsolódó mennyiség értékek (zárási ár, forgó mennyiség) biztosítják az adathalmaz idősor alapú tulajdonságát.

Így már rendelkezésre áll a gépi tanulás alkalmazásához szükséges kiinduló adatsor.

Google Colab bemutatás

A nagy IT vállalatok közül a Google az egyik olyan aki komoly pénzt és időt invesztál a mesterséges intelligencia és a gépi tanulás népszerűsítésére. Ennek egyik eredményeként létrehozta a Colab felületet, azért hogy elősegítse a gyakorlati alkalmazásukat.

A program nagyon hasonló a Google Docs rendszerhez, aki rendelkezik Google fiókkal ingyenesen használhatja a rendelkezésre bocsájtott számítási kapacitást. A Colab felületen Python programozási nyelvben, szükség esetén GPU (grafikus feldolgozó egység, videókártya) teljesítmény igénybe vételével tudják a kezdők programozási és a gépi tanulással kapcsolatos tudásukat fejleszteni és elmélyíteni.

Előkészületek a gépi tanulás alkalmazásához

Első lépésként szükséges egy Google fiók, melynek Drive felületére kell feltöltenünk a BÉT rendszeréből exportált adatállományt.

A Google Drive rendszere, ahova az exportált adatállomány kell feltölteni.
A Google Drive rendszere, ahova az exportált adatállomány kell feltölteni.

A Colab felületére belépve, egy új Python 3 fájlt kell megnyitni, ez lesz az az online környezet, ahol dolgozni fogunk.

A Google Colab platform, ahol a gépi tanulás programját el fogjuk készíteni.
A Google Colab platform, ahol a gépi tanulás programját el fogjuk készíteni.

Ha ezzel megvagyunk, egy üres programfájl kerül a szemünk elé. Ezek a file-ok *.ipynb kiterjesztéssel rendelkeznek és a Drive / Colab Notebooks elérési úton kerülnek tárolásra. Ezek a fájlok letölthetőek és adott esetben saját gépen is szerkeszthetőek.

Egy üres Python file a Colab felületen.
Egy üres Python file a Colab felületen.

Első lépésként, a későbbi könnyebb azonosítás végett az Untitled0.ipynb-t, egy kattintás segítségével nevezzük át.

Az átnevezett Python file a Colab felületen.

Az átnevezett Python file a Colab felületen.

A Colab rendszerben vannak beépített parancsok és könyvtárak, de az egyik leghasznosabb tulajdonsága az hogy saját magunk is tudunk könyvtárakat telepíteni. Ezt a !pip install paranccsal tudjuk megtenni. Második lépésként az fbprophet könyvárat kell telepíteni.

Colab parancssor: !pip install –upgrade fbprophet

Ezután a bal felső sarokban található cella futtatása (run cell, play ikon, CTRL+ENTER) segítségével tudjuk telepíteni az online környezetben az fbprophet rendszert.

Fbprophet könyvtár telepítése.
Fbprophet könyvtár telepítése.

Fbprophet bemutatása

Na de mi is az a fbprophet? Az alkalmazást idősor jellegű adatok alapján történő előrejelzésre fejlesztették ki, ahol a rendszer egy additív modellt használ, olyan módon hogy figyelembe veszi a napi, heti, éves szezonalitásokat. Azon adatok alapján lehet a legpontosabb előrejelzéseket tenni az fbprophet segítségével, melyek erős szezonalitás hatással rendelkeznek és nagy mennyiségű múltbeli adat áll rendelkezésre.

Nagyon fontos, hogy a rendszer kezeli az idősorból esetlegesen hiányzó adatokat, trendek eltolódását, valamint a kiugró adatokat is. Ebből a szempontból az fbprophet az egyik legjobb egyszerűen használható alkalmazás tőzsdei idősoros adatok alapján történő előrejelzés készítésére.

Ha megtörtént az alkalmazás telepítése, egy új cellát kell nyitni (bal felső sarok: + CODE). Ezután importálni szükséges a telepített fbprophet könyvtárat valamint más szükséges könyvtárakat. Az fbprophet telepítésével kapcsolatos kimeneti információkat az első sor melletti CLEAR OUTPUT ikonnal törölni lehet.

Colab parancssor:
import pandas as pd
from fbprophet import Prophet
from fbprophet.plot import add_changepoints_to_plot

A különböző könyvtárak importálása a programba.
A különböző könyvtárak importálása a programba.

A Python programozási nyelvben az import parancs szükséges, hogy a futtatott program használni tudja a telepített könyvtárakat. Első lépésként a Panda könyvtárat (adatkezelés és adatvizualizáció miatt szükséges) importáljuk és az as paranccsal megadjuk, hogy később az egyszerűség kedvéért csak pd kóddal hivatkozunk rá.

Az fbprophet könyvtárból két részt csatolunk a saját programunkhoz: a Prophet szükséges az idősor alapú előrejelzés kiszámításához, míg az fbprophet.plot a vizuális megjelenítés miatt lesz hasznos eszköz. Ha megvagyunk a lejátszás ikonnal tudjuk a programsort a rendszerben futtatni.

Ha nincs hibaüzenet, ebben az esetben nem kapunk visszajelzést a Colab-tól. Következő lépésként a Drive tárhelyet kell a Colab-hoz csatolni, annak érdekében, hogy onnan adatot lehessen beolvasni.

Adatok beolvasása Python-ban

Colab paranccsor:
from google.colab import drive
drive.mount(‘/content/drive’)

A Drive tárhely kapcsolása a Google Colab rendszerhez.
A Drive tárhely kapcsolása a Google Colab rendszerhez.

A futtatás nem történik meg, ugyanis a csatlakozáshoz autentikálni kell a Google Drive felületet. Ennek érdekében a megadott linkre kell kattintani, majd az ott található kódot az szükséges helyre be kell másolni és enter billentyűt nyomni. Ha minden rendben lezajlott a Mounted at /content/drive üzenet jelenik meg.

Egy következő cellában hivatkozzuk meg a korábban feltöltött CSV adatsort.

Colab paranccsor:
df = pd.read_csv(“drive/My Drive/”)
df.head()

A df lesz az a változónk ahova a Panda (I) segítségével a CSV fájlból beolvassuk az adatokat. A Python közvetlenül nem képes fájlokból dolgozni, így mindig szükséges először a külső fájl tartalmát változóba beolvastatni a program segítségével.

A drive/My Drive/ rész után kell megadnunk a Drive-ba feltöltött fájl nevét és kiterjesztését. Amennyiben a feltöltés előtt átnevezzük vagy más CSV fájlt használunk adatelemzésre, értelemszerűen annak a nevét kell megadni. Amennyiben nem a Drive gyökér könyvtárába töltjük fel az fájlt, természetesen az elérési utat is át kell nevezni.

 A Panda segítségével, a Drive-ba feltöltött fájl olvasásása.
A Panda segítségével, a Drive-ba feltöltött fájl olvasásása.

A df.head() paranccsal íratjuk ki az importált adatok fejlécét és első pár sorát. Amikor a cellát futtatjuk (play ikon vagy CTRL+ENTER segítségével) fenti ábrán látható táblázatos visszajelzést kapjuk.

Itt a korábban megnyitott CSV fájl köszön vissza, ugyanolyan struktúrában, ahogy korábban a számítógépen, excel segítségével megnyitottuk. Ezután a

df.plot(x=’Dátum’, y=’Utolsó ár’, kind=”line”)

paranccsal vonalas rajzon is megjeleníthetjük az értékek változását. Az x értéket minden esetben a időváltozó nevével (jelen esetben Dátum) jellemezzük, míg az y a változó mennyiségét jelenti.

Az OTP árfolyam alakulása 2015-től napjainkig.
Az OTP árfolyam alakulása 2015-től napjainkig.

Előrejelzés elkészítése

Ha ezzel is végeztünk, jön a legizgalmasabb rész, a gépi tanulás applikációja a adatokra, olyan módon, hogy abból az árfolyam értékének jövőbeli alakulását előre lehessen jelezni.

Colab parancssor:
df = df.rename(columns={‘Dátum’:’ds’, ‘Utolsó ár’:’y’})
m = Prophet(changepoint_range=0.2)
m.fit(df)
future = m.make_future_dataframe(periods=200)
forecast = m.predict(future)
fig1 = m.plot(forecast)
a = add_changepoints_to_plot(fig1.gca(), m, forecast)

A df.rename paranccsal átneveztük az oszlopok fejlécét annak érdekében, hogy az fbprophet értelmezni tudja az adatokat.

Az m változó fogja megadni, a prophet struktúrában milyen százalékos arányban jelenjenek meg trendfordulók (changepoint_range=0.2, ez lehet variálni.). Ez az értéket utána m.fit(df) paranccsal illesztjük a saját adatsorunkra.

A future változónk lesz, ahol a jövőbeli (napi) értékeket tárolni fogja a program. A változó amit szabadon át lehet írni, a periódusok száma (periods), azaz hogy hány napot jelez előre a rendszer. Az alap érték használatával 200 napos előrejelzés alakulását láthatjuk majd az ábrán.

És a végső ábránk (dobpergés…):

A gépi tanulás könyvtár (Fbprophet) segítségével előrejelzett OTP részvényárfolyam alakulása.
A gépi tanulás könyvtár (Fbprophet) segítségével előrejelzett OTP részvényárfolyam alakulása.

Az ábra értelmezését szándékosan nem végzem el, mindenkinek a saját fantáziájára bízom. Érdemes azonban a fent megnevezett 2 változó (changepoint_range és periods) variálásával figyelni hogyan reagál a gépi tanulás a jövőbeli adatok meghatározása során.

Összefoglalás

A gépi tanulás alkalmazása nem is annyira bonyolult, mint amennyire első ránézésre tűnik. A Google Colab egy remek felület, ahol ingyenesen, mindenféle programok telepítése nélkül ki lehessen próbálni a mesterséges intelligencia alkalmazásait. Mivel ingyenesen biztosít erőforrást, komolyabb, GPU-t igénylő számítási feladatok (gépi látás tanítása) elvégzésére is lehet használni.

A cikkben szerepelő példában, egy nyilvánosan elérhető (BÉT adatok) tőzsdei részvény múltbeli adatait töltöttük fel a Google Drive rendszerébe, melyet összekapcsoltuk a Colab programozási platformmal. Itt egy egyszerű, pár soros program segítségével telepítettük a gépi tanulást biztosító Fbprophet Python könyvtárat, és változóba olvastuk a CSV fájlban tárolt adatokat. Innen pedig pár sor segítségével sikerült az idősor alapú adatok 200 napos előrejelzését megadni.

A módszert jól lehet használni, más idősor alapú adathalmaz elemzéséhez, de jól működik például termelési folyamatparaméterek múltbeli értékein alapú előrejelzése során is. Innentől kezdve a képzelet szab határt milyen adatok előrejelzésére lehet felhasználni a leírt módszert.

6 ok, amiért a Python a jövő programozási nyelve

6 ok, amiért a Python a jövő programozási nyelve


Programozás. Egy nehéz téma. Azonban tudni kell, hogy a mesterséges intelligencia alkalmazásához szükségünk van ezen képesség minimális elsajátítására és a Python ismerete nagy előnyt jelent.

Viszont alapesetben sok embernek a végeláthatatlan kódsorok, összefüggéstelen utasítások és értelmezhetetlen szintaktika ugrik be a programozásról. És természetesen, csak egy több éven át, egyetemen képzett PROGRAMOZÓ képes ilyen földöntúli dolgot értelmezni és kézben tartani.

Én ezt teljesen másként gondolom. Igenis vannak olyan programozási nyelvek, melyek minimális tanulás után jól és egyszerűen használhatók. Ezt gondolom magáról a Pythonról is.

Manapság már nem kérdés, hogy mindenkinek (mérnök, marketinges stb.) érteni kell valamilyen szinten a programozáshoz, mivel egyrészről informatikus hiány van (nincs aki dolgozzon), másrészről lassan minden eszközünk okos lesz és minden folyamatot okos módon akarunk kezelni (automatizált marketing, gépi látás, orvosi megoldások).

Az IT tudás olyan lesz mint az angol nyelv vagy a B kategóriás jogosítvány. Annak idején csak néhányan tudták vagy rendelkeztek vele, de manapság már elvárás a fehér galléros munkakörökben.

Nincs egyértelmű válasz arra, melyik az a programozási nyelv, amelyet érdemes megtanulni. Nincs olyan, hogy legjobb programozási nyelv. Viszont szeretnék most mutatni 6 érvet ami miatt azt gondolom hogy a jövőre való tekintettel érdemes elköteleződni a címben említett nyelv mellett.

1.  A Python népszerű

A StackOverflow (egy platform ahol a diákok és szakemberek programozással kapcsolatos kérdéseket tehetnek fel és válaszolhatnak meg) programozási nyelv népszerűségi rangsora szerint a Python lehagyta az összes nyelvet. Talán a népszerűség nem tűnik hasznos összehasonlítási alapnak, de nagyban befolyásolja mennyi és milyen minőségű tartalom érhető el az adott nyelvhez.

A Python először 1991-ben jelent meg az ABC programozási nyelv utódjaként. Amikor a megalkotója, Guido van Rossum, a feladaton dolgozott, fogalma sem volt róla hogy ilyen népszerű lesz az általa megalkotott nyelv.

A fő programozási nyelvek népszerűsége.
A fő programozási nyelvek népszerűsége. Kép forrása: Stackoverflow.

A sikere nem csak a jelenlegi népszerűségének köszönhető. A StackOverflow megvizsgálta a programozási nyelvek iránti érdeklődés változását a magas jövedelmű országokban indított keresések alapján. Az eredmény azt mutatja, hogy a Python lett a legstabilabban és leggyorsabban növekvő fő nyelv.

Ha a jövőbe tekintünk, akkor is egyértelműnek látszik a népszerűségének növekedése.

A fő programozási nyelvek népszerűségének vátozása a jövőben.
A fő programozási nyelvek népszerűségének vátozása a jövőben. Kép forrása: Stackoverflow.

2. Komoly cégek használják a Python-t

Elmondható, hogy több nagy technológiai cég (Uber, Paypal, Google, Facebook, Instagram, Netflix, Dropbox, Reddit stb.) is Python-t használ a fejlesztési és tesztelési feladatok során.

Ezeken túlmenően a Python-t a robotikában, beágyazott rendszerekben is széles körben használják, még Arduino vezérlésre is. A korábban C és C++ nyelven íródott programok is könnyen kapcsolhatók ebben a nyelvben írt rendszerekhez.

Bárhol, ahol szükség van adatelemzésre a Python és moduljai előnyben vannak. A Goldman Sachs az egyike azon nagy pénzügyi intézményeknek, aki használják az általuk generált nagy mennyiségű adat (tranzakciók, előrejelzések)  feldolgozására.

Ezen típusú felhasználás az utóbbi időben rendkívül népszerű lett, mivel a szoftver mögött álló hardver feldolgozó ereje nagy mértékben nőtt. Így adatelemzés során akár pillanatok alatt képesek vagyunk a múlt eseményeit értelmezi, vagy a jövőt meghatározni.

3. Gépi tanulás Python segítségével

Ma már senki előtt sem titok, hogy a gépi tanulás mennyire fontos a modern világban. Meghatározza az internetes létedet, és koordinálnak mindent a neurális hálózatok segítségével a szociális hálózatoktól kezdve az önvezető autókig. Az utóbbi években ez a terület hatalmas fejlődésen ment keresztül és meghatározó szerepe lesz az elkövetkező 20-30 esztendő fejlődésében.

Hol találkozik az ember a Python-nal? Ha gépi tanulásról beszélünk, mindenhol. A Google által fejlesztett TensorFlow elsősorban ezen nyelv segítségével programozható, Minden online kurzus a neurális hálózatok témakörében Python nyelven érhető el. Minden gépi tanuláshoz kapcsolható módszer és egyéb tartalom nagyon jól kezelhető Python segítségével.

A gépi tanulás való hozzáértés igénye az iparban és szolgáltatói szférában napról napra növekszik. Ezen igényből fakadóan a Python nyelv is folyamatos fejlődésen megy keresztül.

4. Python széles támogatással rendelkezik

A népszerűség folyamatos növekedése miatt remek támogatottsággal rendelkezik minden szinten. Mint a kezdők számára népszerű nyelv, számos oktatási anyagban elérhetőek az alapvető programozási koncepciók magyarázata.

A programozási nyelvek online közösségi támogatottsága folyamatosan növekszik, de itt is kiemelkedik a Python: szinte minden problémára és hibaüzenetre található az interneten részletes magyarázat és megoldási javaslat. Így aki saját maga kezd neki elsajátítani a nyelvet, meg tud oldani saját erőből minden problémát.

TOP 20 mesterséges intelligenciát segítő Python könyvár.
TOP 20 mesterséges intelligenciát segítő Python könyvár. Forrás: kdnuggets.

A sokoldalúságát jellemzi, hogy több mint 125 000, harmadik féltől származó könyvtár érhető el az interneten. Ezeket főként speciális célokra használják: webfejlesztés, szövegfeldolgozás, mesterséges intelligencia, gépi tanulás.

Például egy biológus számára nélkülözhetetlen a Biopython könyvtár, mely nagyban segíti a munkáját genetikai szekventálás témakörében. Az adatelemzés és mesterséges intelligencia egy sarokköve ez a nyelv: egy adattudós (data scientist) vagy adatmérnök (data engineer) számára nélkülözhetetlen eszközök a NumPy, matplotlib vagy a pandas könyvtárak.

5. Python az oktatás nyelve

A számítógépek használata az oktatásban radikálisan megváltozott az utóbbi években. A múltban a szerencsésebb diákok megtanulták a prezentációs technikákat a számítástechnikai eszközök segítségével, de másra nem futotta. Manapság már az sem megy csodaszámba, ha a gyerekek kódolni tanulnak az iskola falain belül.

A Python könnyen olvasható, egyszerű leírással és józan ésszel követhető szintaxissal rendelkezik. Mivel felhasználói élmény sokkal jobb a többi programozási nyelvhez viszonyítva, tökéletes eszköz a gyerekek tanítására.

Ezen nyelv segítségével programozható az egyik legnépszerűbb mini számítógép a Raspberry Pi is, mely piacvezető szerepet tölt be a házimozi és okos otthon alkalmazásokban.

A fiatalok nevelésén túlmutat az a tény, hogy a számítógépes tudományokat és matematikát hallgató egyetemisták számára is kötelező tananyag a Python.  Ez a nyelv a Codecademy szerint is a leggyorsabban növekvő nyelv, melyet könnyedén lehet online képzés segítségével elsajátítani.

6. A Python ingyenes

Talán a legfontosabb tényező, de igaz. A Python keretrendszer és tudást tartalmazó könyvtárak mind ingyenesen állnak rendelkezésre, vagyis divatos szóval élve open-source-ok. Nagyon fontos tudni, hogy mind a Python-t, mind a kiszolgáló könyvtárakat folyamatosan fejlesztik a jobb felhasználói élmény érdekében.

Összefoglalva:

a bemutatott érvek közül már 1-2 is elegendő, hogy elköteleződjön valaki az adott programozási nyelv mellett. Azonban a felsorolás összessége biztossá teszi, hogy a jövőben aki mesterséges intelligencia, gépi tanulás vagy speciális területeken tevékenykedik, a legjobb döntést programozási nyelv elsajátítására a Python jelenti.