Data Science fizetések és karrier 2020-ban

Data Science fizetések és karrier 2020-ban

Détaszájensz – szexi vagy túl-hype-olt?

A Data Science ma már az egyik legizgalmasabb és legnagyobb kihívások elé állító szakma. A gyors, folyamatos fejlődés, valamint az igény az adat alapú döntéshozatalra a vállalatok részéről, hatalmas igénybevételt jelent a szakemberek szempontjából is. Ezáltal a Data Science fizetések is dinamikusan változtak az informatikai szektorban. A mesterséges intelligenciával kapcsolatos, széles körben elfogadott képzések száma manapság még limitált, így az adattudománnyal foglalkozó szakemberek bére, az informatikai szektoron belül a legmagasabb szinten áll. 

Ebben az összefoglalóban szeretnék információkkal szolgálni, a nyitott pozíciók helyzetéről, illetve megmutatni nagyságrendileg mekkora fizetések érhetőek el, megfelelő képzettség és tapasztalat birtokában. Nem titkolt célom a korábban megjelent írásra reagálni, az ott leírt helyzetet aktualizálni.

Saját tapasztalatból mondhatom, hogy a Kelet-Európai, így a Magyarországi informatikai kultúra is nyitni kezdett az adattudományok irányában. A Google Trend adatai alapján világviszonylatban is komoly út áll az elmúlt 5 évben a mesterséges intelligencia mögött. Folyamatos fejlődés jellemezte az elmúlt időszakban, valamint az emberek számára is széles körben ismertté és elérhetővé váltak a technológia eszközei. A magyar piac némileg lemaradva, de a trendet követve kezdi alkalmazni az előnyeit. Mindemellett a Python is az egyik legnépszerűbb programozási nyelv lett az elmúlt pár évben, népszerűségével még a mesterséges intelligenciát is lekörözte.

Data Science fizetések Magyarországon

Magyarországon elsősorban a multinacionális vállalatok engedhetik meg maguknak, hogy az üzleti elemző (Business Analyst) pozíció mellett, gépi tanulással foglalkozó mérnököt (Machine Learning Engineer) vagy adattudóst alkalmazzanak (Data Scientist). Ennek az oka, a cikk elején említett szakemberhiány és a relatív magas elvárt bérezés. A magas bevétellel rendelkező vállalatok a korai adaptálói a technológiáknak, mivel a befeketetés megtérülési idejét is képesek kivárni, finanszírozni. 

Emellett, a korszerű, jól automatizált folyamatokat alkalmazó vállalatok rendelkeznek megfelelő mennyiségű és minőségi adattal, melyet könnyen extra profitra tudnak konvertálni az adattudományt szolgáló szakemberek. Hogy pár példát is említsek, a bankszektor, az autóipar és telekommunikációs cégek engedhetik meg magunknak egyelőre az adattudománnyal foglalkozó kollégák teljes állásban történő alkalmazását. Hogy jól lehessen érteni, egyes pozíciókban milyen feladatokat kell ellátni, készítettem egy gyors összefoglalót.

Milyen Data Science pozíciók léteznek?

Data Analyst (Business) aki főként programozási eszközök segítségével, az adat megjelenítésének és összefüggések ábrázolásának nagymestere. Machine Learning Engineer jó programozó, érti a matekot és a statisztikát, és elkészíti a gépi tanulás modelleket. Data Engineer az adatok specialistája, megfelelően ismeri a szoftverfejlesztés eszközeit és képes a kesze-kusza adatokból strukturált halmazt képezni, a gépi tanulás modellek bemeneteként. Data Scientist, az adattudós, aki mindenhez is ért. Képes komplex nézőpontból az üzleti problémát és a gépi tanulás eredményeit értelmezni, a projektet vezetni. A Data Science fizetések szempontjából általában az első esetben lehet a legszerényebb, míg utóbbi esetben a legmagasabb javadalmazásra számítani.

Egy nagyon fontos közös tulajdonság van a fent említett 4 szerepkörben, szinte kizárólagosan a Python programozási nyelvet használják. A fejlesztők között egyre népszerűbb nyelv a Python (ahogy a Google Trend is mutatta) és néhány konkurens (R nyelv, Scala nyelv) mellett, egyeduralkodóként áll a Data Science világában. 

Hol találunk Data Science fizetéseket, állásokat?

Véleményem szerint Magyarországon 3 fő forrásból lehet informatikai és adattudománnyal kapcsolatos állásokat találni. Ezeket most relevanciájuk szerint növekvő sorrendben fogom bemutatni, kiemelve azt is, ahol a Data Science fizetésekről is kapunk információt.

Profession

A profession.hu egy régi motoros az online hirdetés és fejvadászat szakmában. Mivel nem specializálódott IT vagy Data Science toborzásra, így a megfelelő kulcsszavakkal történő keresés is viszonylag kevés találatot hoz, a nyitott pozícióval rendelkező vállalatok sem használják elsődleges hirdetési felületként. A Professiont-t főként a telekommunikációs cégek és a termelő vállalatok részesítik előnyben, Data Engineer vagy Data Analyst állások hirdetésére.

Profession keresési felülete, data science kulcsszó használatával.
Profession keresési felülete, Data Science kulcsszó használatával.

Nofluffjobs

A nofluffjobs.hu egy relatív új szereplő az online hirdetések világában. Kivétel nélkül IT pozíciók gondozására szakosodtak. Ami az egyik legszimpatikusabb tulajdonsága az oldalnak, hogy csak bérsáv megadása mellett lehet állásokat feltölteni, így jó képet kaphatunk, hogyan is alakulnak a Data Science fizetések hazánkban. Nyugat-Európában és az USA-ban teljesen normális dolog, hogy bérsávot adnak meg egy hirdetés mellé a HR-es kollégák, személyes véleményem szerint is nyitni kell, hogy ez általános dolog legyen.

Nofluffjobs keresési felülete, data science kulcsszó használatával.
Nofluffjobs keresési felülete, Data Science kulcsszó használatával.

A készített pillanatfotón látható, hogy mind Python, mind Data Science-hez kapcsolódó állások is találhatóak az oldalon. A távmunkában foglalkoztatott szenior Python fejlesztő 950.000 Ft bruttó fizetésre számíthat, amennyiben megfelelő programozói tapasztalattal rendelkezik, és ismeri az Amazon felhő alapú alkalmazásait.

Egy másik, Üzleti Elemző (Data Analyst) pozícióban, online rendszerek felhasználóit kell különböző analitikai módszerekkel elemezni, azért hogy személyre szabott ajánlatokat kaphassanak a szolgáltatóktól. Mindezt 500-800 ezer forint bruttó bérsávban, alkalmazotti jogviszony mellett. Az elérhető csúcs pedig a bruttó 1-1.4 millió forint sávban mozgó Big Data Engineer, akinek a feladata nagy-adat feldolgozó rendszerek készítése Apache Spark-ban. 

Big Data Engineer pozíció leírása és a szükséges elvárások a nofluffjobs oldalon.
Big Data Engineer pozíció leírása és a szükséges elvárások a nofluffjobs oldalon.

Ahhoz, hogy valaki komoly eséllyel indulhasson interjúkon, erős elméleti háttérrel és megfelelő tapasztalattal kell hogy rendelkezzen. Sajnos az oktatási rendszerek ma még nem készültek fel a mesterséges intelligenciához kapcsolódó ismeretek átadására, így legtöbb esetben a jelöltnek maga kell összeszednie a tudást. A jó hír viszont, hogy különböző online források segítségével, legalább junior szinten meg lehet tanulni programozni, és az ingyenes, nyílt forráskódú alkalmazások, könyvtárak elsajátításával, közepes szinten megismerni a gépi tanulás modellek, adatbázisok alkalmazását. Innentől kezdve pedig egyenes az út egy Junior Machine Learning, vagy Data Engineer pozícióba. Szerencsére, a relatív magas Data Science fizetések nagyon motiválóan hatnak az oktatási rendszerek fejlődésére is.

Linkedin

A végére hagytam az IT-sek kedvenc álláskereső platformját . A Linkedin-en a cikk írásakor a “machine learning” kulcsszóra 145 találatot ad a kereső, magyarországi helyszínt beállítva. Ez a szám magáért beszél. Magyar cégek, illetve külföldi, távmunkát ajánló cégek is előszeretettel használják a legnépszerűbb szakmai és üzleti közösségi oldalát. Többek között a Nokia, Morgan Stanley és az IBM hirdet állásokat mesterséges intelligencia témakörökben.

LinkedIn keresési felület a machine learning kulcsszó alkalmazásával.
LinkedIn keresési felület a machine learning kulcsszó alkalmazásával.

Kedvenc hirdetésem a böngészés során, a Machine Learning Fejlesztő néven magyarosított állás lett. Feladatok között szerepel: üzleti adatok feldolgozása, elemzése, előrejelzése / osztályozása machine learning algoritmusok segítségével, eredmények vizualizációja. Elvárások pedig: szoftverfejlesztési tapasztalat Python alkalmazásban, gépi tanuló algoritmusok ismerete, adatbázis-ismeretek (SQL), statisztikai alapismeretek, angol nyelv középszintű ismerete (írásban és szóban is).

Ahogy említettem, rengeteg ingyenes vagy nagyon olcsó forrás áll rendelkezésre, ha programozásról, mesterséges intelligenciáról szeretnénk tanulni, de ezek jellemzően angol nyelvűek. Emelett pedig a Data Science-el kapcsolatos pozíciókban is alapelvárás az angol ismerete, így érdemes ezt a tudást is minél magasabb szintre fejleszteni.

Annak érdekében, hogy kutatásra és tudományos módszerekre alapozva pontosan meg lehessen mutatni a Python programozás, mesterséges intelligencia, Data Science fizetéseket, a korábbi cikkben is használt forrást fogom újra használni. 

Salary Guide 2020

A Hays Magyarország, a toborzási projektekre alapozva, minden évben kiadja, az előző évre vonatkozó piaci trendeket és bérsávokat tartalmazó összefoglalóját, illetve felsorolja a legfontosabb jogi és gazdasági változásokat amelyek hatással lehetnek a jövőre. A 2020-as kiadvány kiemelten említi, hogy a magyar IT piac továbbra sem rendelkezik elegendő tapasztalt és jól képzett szakemberrel, így a jelöltekért folyamatos a verseny, ami a bérek fokozatos emelkedését is jelenti.

A várható COVID-19 vírus okozta gazdasági stagnálás vagy visszaesés sem fogja ezt a helyzetet számottevően megváltoztatni, így aki IT szakterülete képzi magát, továbbra is sok nyitott ajánlattra és átlag feletti bérezésre számíthat.

Hays Salary Guide 2020 - programozó állások bérezési szintjei.
Hays Salary Guide 2020 – programozó állások bérezési szintjei.

A felmérés szerint a legkeresettebb jelöltek a szoftverfejlesztők (például Python nyelvben), de Magyarországon jelentősen megnőtt a kereslet a Data Science tudással rendelkező jelöltek iránt is. A folyamatos, főként az iparban jellemző innovációnak köszönhetően, a pozíciók és a velük járó felelősségi körök is egyre összetettebbé válnak. Nagyon fontos a cégek számára az automatizáció és a mesterséges intelligencia, egyre több vállalat invesztál a kutatás-fejlesztés (K+F) területbe, hogy megtalálják azokat a megoldásokat, amelyek piacvezetővé teszik őket. A kutatás említi, hogy a tehetséges fejlesztőkért folytatott harc az elkövetkező időszakban még jobban fokozódni fog.

Az összefoglaló szerint egy kezdő Python fejlesztő bruttó 600.000 Ft fizetésre számíthat, míg egy tapasztalt programozó akár a 950.000 Ft-os bérezési szintet is elérheti.

Hays Salary Guide 2020 - Egyéb IT állások bérezési szintjei.
Hays Salary Guide 2020 – Egyéb IT állások bérezési szintjei.

Data Science fizetésre és pozícióra rátérve, a tipikus belépő bér, 1-3 év tapasztalat esetén bruttó 750.000 Ft, mely 3 év felett könnyen 7 számjegyű havi bérezést is jelenthet, azaz a havi fizetés meghaladhatja az 1.000.000 Ft-ot. A felmérést pozíció szerint még nem differenciálja a Data Science-hez kapcsolódó szakmákat, de ez valószínűleg pár éven belül meg fog változni. Ehhez arra van szükség, hogy minél több ilyen munkakör jöjjön létre Magyarországon is.

Összefoglalás

A mesterséges intelligencia és a Data Science manapság az egyik legfelkapottabb területek a világon. Egyelőre, a Magyarországon elérhető pozíciók száma még korlátozott, de cikk alapján jól látható, hogy javadalmazásban felveszi a szakterület a versenyt a többi IT specifikus pozícióval.

A tendenciák alapján az látszik, hogy nemcsak önálló szakmaként fog működni, hanem a különböző pozícióban dolgozó emberek kiegészítő eszközként fog fejlődést generálni a termelő és szolgáltató szektorban. Amennyiben az oktatási rendszerek is megfelelően támogatják a mesterséges intelligencia elsajátítását, akár egy nem IT pozícióban dolgozó ember számára is elérhető cél lesz a tudás elsajátítása.

Jupyter Notebook használata Python programozáshoz

Jupyter Notebook használata Python programozáshoz

Bevezetés

A Python programok elkészítéséhez használható eszközök közül többet bemutattam egy korábbi cikkben. Azonban egy fontos alternatíváról elfelejtkeztem, nevezetesen az egyik legegyszerűbb, legnépszerűbb Python IDE, a Jupyter Notebook részletes bemutatása kimaradt. 

Hé, mi az az IDE? Integrated Development Environment – én csak úgy hívom hogy PROGRAM amiben PROGRAMOZNI lehet. Amennyiben pontosan szeretném magyarra fordítani, akkor integrált fejlesztői környezetnek nevezzük, ahol a megadott programnyelveken programokat lehet készíteni és futtatni.

A Jupyter Notebook egy nyílt-forráskódú, interaktív IDE különböző programozási nyelvek számára.
A Jupyter Notebook egy nyílt-forráskódú, interaktív IDE különböző programozási nyelvek számára.

A Python programozás és a programok elkészítésének egyik kiváló eszköze a Jupyter Notebook. Nagyon hatékony a mesterséges intelligencia projektek fejlesztéséhez és bemutatásához is. Aki kezdőként találkozik a programozás kihívásaival, mindenkinek a Jupyter-t javaslom az alapok elsajátításához. Na de pontosan miért is?

Több oka van, az első és talán legfontosabb, hogy nem kell érte fizetni, azaz ingyenesen használható. Ahhoz hogy megértsük, hogyan működik, felfedjük az előnyeit, pár szóban beszélnék az unalmasnak tűnő (de annál fontosabb) működési mechanizmusról és egyéb alkalmazási lehetőségeiről is.

Egy kis háttérinformáció

A jelenleg elérhető Jupyter Notebook, a 2010-ben bemutatott IPython Notebook koncepciójára és rendszerére épül. Az IPython Notebook-ban a REPL modell segítségével oldották meg, hogy a Python kód a terminálon keresztül fusson le, kvázi mint egy felhasználói felületként működik a Python parancssor előtt.

A REPL modell az elnevezés az angol “read-eval-print-loop” szavak kezdőbetűiből származik.

Általánosságban egyszerű, interaktív programozási környezetet jelent, amely a felhasználói bemenetet kiértékeli (végrehajtja), majd az eredményt visszaadja a felhasználónak. A modell alkalmazásának köszönhető, hogy a Jupyter Notebook rendelkezik a legtöbb kényelmi funkciójával.

Amikor egy programkód fut le a Jupyter felületén, valójában az IPython Kernel hajtja végre a feladatokat és kommunikál a Jupyter Notebook felhasználói felületével.

Mivel a program nincs direktbe kötve a Python végrehajtó egységéhez, így lehetséges az hogy a rendszer adott esetben képes más nyelven írott kód kezelésére is. Természetesen ahhoz egy másik nyelv fordító vagy végrehajtó programját kell futtatni a Jupyter rendszerén keresztül. 

Jegyzetek és programkód kapcsolata a Jupyter Notebook felületén.
Jegyzetek és programkód kapcsolata a Jupyter Notebook felületén.

A Jupyter Notebook képes ezen felül tárolni a beírt kódot, valamint a kimenetet, illetve lehetőséget ad jegyzetek készítésére is. Ezt egy nagyon fontos kényelmi funkciónak tartom, mert így képesek vagyunk a programkód és az általa eredményezett kimenetel mellett megjegyzéseket, szöveges-képes magyarázatokat is a programunkba illeszteni.

Ez az egyik funkció, ami a REPL modell alkalmazásának köszönhető. Kvázi, elmesélő történetként tudjuk bemutatni a programunk működését és az eredményeket.

Jupyter Notebook telepítése

Mivel a programot Python kódok futtatására akarjuk alkalmazni, mindenképpen szükség van rá, hogy a gépünkön telepítve legyen a nyelv 2.7 vagy 3.+-os verziója. 

Pip segítségével

A Python beépített programcsomag telepítőjét használva (amennyiben ezzel sem rendelkezünk az alábbi linken letölthetjük), egyszerűen a Python parancssorba a

pip install jupyter

parancsot kell beírni és a telepítés automatikusan megtörténik.

Anaconda segítségével

Abban az esetben, ha kezdőként állunk neki a Python programozás elsajátításának és a Jupyter Notebook felfedezésének, a legjobban a korábbi cikkben is bemutatott Anaconda rendszerrel járunk. A weboldalon kiválasztott telepítő fájl letöltése és telepítése után a Python 3 rendszer és a Jupyter Notebook rögtön használható lesz a számítógépünkön.

Jupyter Notebook indítása

Csak annyi a dolgunk hogy Windows rendszerben a START menü, JUPYTER kulcsszavakat használva, vagy a Python parancssorban a JUPYTER parancsot kiadva, elindítjuk a programunkat. Nem szabad meglepődni, az alapértelmezett böngészőnk fog megnyílni, ott egy böngésző lapon jelenik meg a Jupyter Notebook felhasználói felülete.

A Jupyter Notebook indítása böngészőablakban történik meg.
A Jupyter Notebook indítása böngészőablakban történik meg.

Hamar rá lehet jönni, hogy egy webes applikációt használunk, amely saját, lokális szervert vesz igénybe a programok futtatásához. A

http://localhost:8888/tree

elérési útvonalon minden esetben vissza lehet térni a kezdőoldalra.

Új Python Jupyter Notebook indítása.
Új Python Jupyter Notebook indítása.

A felhasználói felület jobb felső sarkában a New / Új parancs alatt, Python 3 opciót választva, egy új böngésző lapon indul el a programozási jegyzetfüzet. Minden jegyzetfüzet (avagy Notebook) külön böngésző lapon fut, így képesek vagyunk többet is futtatni párhuzamosan.

A kezdő oldalra visszalépve láthatjuk az imént elindított “Untitled.ipynb” névvel rendelkező fájlt. A Jupyter Notebook zöld ikonnal jelöli azokat a jegyzetfüzeteket, melyek aktuálisan meg vannak nyitva.

Miért használjuk az “.ipynb” kiterjesztést?

Aki találkozott már Python programmal, biztosan tudja hogy a fájlokat “.py” kiterjesztéssel tároljuk. Viszont a Jupyter Notebook egy speciális kiterjesztést használ, aminek a tárolási struktúrája eltér a normál fájloktól.

Minden “ipynb” kiterjesztéssel rendelkező file valójában szöveget tartalmaz, a  jegyzet tartalmát JSON formátumban tároljuk el. A tárolási rendszer a JavaScript nyelvből alakult ki, egyszerű adatstruktúrák és asszociációs tömbök mentésére szolgál.

A cikk elején bemutatott példa ipynb fálj részletei.
A cikk elején bemutatott példa ipynb fálj részletei.

A jegyzetfüzet minden egyes része, legyen az kód, szöveg, vagy kép, szöveg egységekbe konvertálnak, a szükséges metaadatokkal együtt. A jegyzetfüzetre jellemző metaadatokat mi is képesek vagyunk módosítani a Szerkesztés / Jegyzetfüzet, metaadatok szerkesztése menüpont alatt.

Jupyter Notebook kezelőfelületének használata

Két kiemelendő része van a jegyzetfüzetnek, a cellák (cells) és kernelek (kernels). A két elem funkciójának megismerése kulcsszerepet játszik a Jupyter Notebook működésének megértésében.

A kernel olyan program, ami értelmezi és végrehajtja a felhasználó által megadott programkódot. Amikor Python kódot írunk a Jupyter jegyzetfüzetbe, nincs extra feladatunk, mert a program beépített kernele ismeri a kígyós nyelvet. De lehetőség van egyéb kernelek segítségével, más nyelven írt programok futtatására is.

A cella maga a tárolóeszköz, amely a megadott szöveget jeleníti meg, vagy a beírt kódot futtatja a kernel segítségével.

Cellák

A cellák tehát azok az elemek, amelyek felépítik a jegyzetfüzetet. Funkció szempontjából 4 típusú cellát különböztetünk meg:

  • Kódot tartalmazó cella: ezekben adjuk meg a futtatandó kódot, a kernel segítségével értelmezi a program, és cella alatt megadja az esetleges kimeneteket.
  • Markdown cella: itt van lehetőség szöveges információ megjelenítésére, az elnevezés a Markdown jelölő nyelvre utal.
  • NBC konverter cella: ez a típus van segítségünkre, amikor konvertálni szeretnénk a jegyzetfüzetet (pl. PDF formátumra).
  • Címsor cella: Ahogy a webes alkalmazásoknál, itt is lehetőségünk van a Jupyter Notebook rendezetté tételére, címsorok, fejlécek használatával.
Jupyter Notebook cella típusok.
Jupyter Notebook cella típusok.

Amikor képet akarunk a füzetbe illeszteni, érdemes direkt linkeket használni. Lehetőség van a jegyzetbe történő rögzítésre is, azonban ez nagyban növeli a füzetünk méretét.

Kernelek

A Jupyter Notebook mögött esetünkben egy Python kernel fut. Amikor futtatunk egy kódot, az a kernel segítségével végrehajtódik és az eredmény, vagy kimenet visszakerül a cella struktúrába és megjelenik a felhasználó számára. Nagyon fontos hogy a kernelbe kerülő információk az egész jegyzetfüzetben az összes cella számára elérhetőek.

Például ha könyvtárakat importálunk az első cellában, és futtatjuk a programkódot, ezek után ha használni szeretnénk az importált elemeket, nincs szükség az újboli beolvasásra, mert a kernel eltárolta az adatokat. Hasonló a helyzet változók definiálása esetén is.

Az esetek nagy részében a jegyzetfüzetben lévő cellák értelmezés fentről lefelé történik. A kernel menüben van lehetőség a program futtatásába történő beavatkozásra.

A cellák bal margójánál van lehetőség az ott megadott programkódot futtatni (lejátszás ikon segítségével), és itt lehet látni ha egy program végtelen ciklusba kerül (folyamatos futás) vagy végrehajtódott.

Jupyter Notebook kernel parancsok.
Jupyter Notebook kernel parancsok.

A kernel menüben lehetőségünk van beavatkozni a programok futtatásába vagy jegyzetfüzet visszaállítására:

  • Restart parancs: újraindítja a kernelt és törli az összes változót,
  • Restart & Clear output parancs: a Restart parancson kívül, törli a kimeneti cellák tartalmát,
  • Restart & Run All parancs: kernel újraindítás, kimeneti cellák törlése és a cellák sorrendben történő futtatása.
  • Interrupt parancs: amennyiben olyan programot indítunk el, amely végtelen ciklusba kerül, vagy nem szeretnénk megvárni a futtatás végét, a megszakítás paranccsal tudjuk megállítani a folyamatot.

Jegyzetfüzet nevének megadása

Amint megnyitottunk egy Jupyter Notebook-ot, érdemes rögtön a “Untitled.ipynb” név helyett egy beszédesebbet választani. Ezt úgy tudjuk megtenni, ha a bal felső sarokban megjelenő fájlnévre kattintunk és rögzítjük a módosítást.

Egy másik módszer a megnyitott jegyzetfüzet Fájl / Átnevezés (File / Rename) funkció használata. Mindenképpen figyelni kell arra, hogy csak olyan jegyzetfüzetet lehet átnevezni, amely éppen nem futtat programkódot.

Másik megoldás a Notebook átnevezésére, a főoldalon található fájlban végrehajtott parancs segítségével történhet meg.

Jegyzetfüzet megosztása

Amikor a Jupyter Notebook megosztásáról beszélünk, általában kétféle célunk lehet. Vagy a csak beírt program részleteket szeretnénk megosztani, vagy kiegészítve azt a program futtatásának eredményeivel. A megosztott jegyzetfüzet pontosan úgy fog megjelenni az olvasó számára, ahogyan azt mi a Jupyter programban látjuk.

A megosztás előtt érdemes a korábban említett kernel parancsok vagy a kimeneti cellák törlésével (Cella / Minden kimenet / Törlés) és a Restart / Run All paranccsal újra futtatni az egész jegyzetfüzetünket.

Ezzel megvédjük magunkat attól, hogy az egyesével történő futtatások és a jegyzetfüzet felépítése során, a cellák nem tökéletesen definiált összefüggése miatt, nem fut le a teljes programkód. Ha ezzel végeztünk, a Fájl / Letöltés mint (File / Download as) paranccsal különféle formátumba lehet letölteni az elkészített munkát (PDF, HTML, ipynb, stb.).

Összefoglalás

Ebben a cikkben összefoglaltam a Jupyter Notebook alkalmazásának alapvető tudnivalóit, elsősorban azoknak üzenve, akik Python programok elkészítéséhez szeretnék alkalmazni ezt a remek és egyszerű rendszert. Ha túljutottunk a telepítésen és a felhasználói felület megismerésén, már könnyedén képesek vagyunk egyszerűbb programokat készíteni és azokat megosztani másokkal.

Egy következő cikkben bemutatom a Jupyter Notebook gyakorlati használatát, ahol programot fogunk készíteni egyszerű adatok beolvasásához és különböző (szöveges, grafikus) prezentáláshoz.

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 kódok direkt másolása esetén figyeljünk rá, hogy a Colab felületen, az aposztróf (‘) és idéző (“) jeleket javítani kell, különben SyntaxError hibaüzenet köszön vissza.

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.