Jazyk Python ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
O jazyku ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
Programovací jazyk Python Vysokoúrovňový interpretovaný programovací jazyk pre všeobecné použitie Tvorca Guido van Rossun v roku 1991 Založený na jednoduchej čitateľnosti kódu namiesto zátvoriek { } povinné odsadzovanie kódu zvyšuje sa prehľadnosť kódu Bloky v programe sa určujú odsadením (Tab alebo 4 medzery) Podporuje dynamické typovanie, automatickú správu pamäte, rôzne programovacie paradigmy (objektovo-orientované, imperatívne, funkcionálne a procedurálne programovanie) Poskytuje rozsiahlu a zrozumiteľnú štandardnú knižnicu
Python ako jazyk pre výučbu Python búra zažitú predstavu, že jazyk vhodný pre výučbu programovania pre začiatočníkov je zároveň nevhodný pre prax (Pascal) Mnoho stredných škôl experimentuje s výučbou Pythonu
Rýchlosť Pythonu Python je z hľadiska výkonu pomalý jazyk, avšak vývoj v ňom je vďaka jednoduchej syntaxi a mnoho knižniciam veľmi rýchly Nižšie vidíme príklad, koľko hodín trvalo napísanie programu pre spracovanie textových reťazcov v jednotlivých jazykoch
Na čo je dobrý Python? link
Flexibilita Python omnoho viac odpúšťa chyby, takže budete môcť zostaviť a spustiť program, kým nedosiahnete problémovú časť Možnosť spúšťať kód po riadkoch (keďže je interpretovaný) napr. ako v Matlabe Ako dynamicky napísaný jazyk je Python pomalý, pretože je príliš flexibilný a stroj by musel robiť veľa odkazov, aby sa uistil, čo je definícia niečoho, čo spomaľuje výkon Pythonu Existujú alternatívy, ako napríklad PyPy, ktoré sú rýchlejšie implementácie Pythonu
Využitie a komunita Python má na StackOverflow viac ako 86K sledovatelov a cez 500K otázok týkajúcich sa Pythonu Štatisticky sú Pythonové otázky 3. najodpovedanejšie Na Angelovom výpise je Python 2. najžiadanejšou zručnosťou a tiež zručnosť s najvyšším priemerným platom S nárastom Big Data sú vývojári spoločnosti Python v úlohe data scientist, a to najmä preto, že Python je ľahko integrovaný do webových aplikácií na vykonávanie úloh, ktoré vyžadujú strojové učenie
Budúcnosť Pythonu Podľa indexu TIOBE je Python štvrtým najpopulárnejším programovacím jazykom zo 100 So vzostupom Ruby on Rails a nedávno Node.js, používanie Pythonu ako hlavného prototypového jazyka pre backendový vývoj webových stránok sa trochu zmenšilo, hlavne preto, že má fragmentovaný ekosystém MVC S nástupom Big Data, ktoré sa stávajú čoraz dôležitejšími, sa Python stal zručnosťou, ktorá je viac žiadaná ako kedykoľvek predtým, najmä preto, že sa dá integrovať do webových aplikácií
Zen Pythonu základná filozofia jazyka
Inštalácia a IDE ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
Inštalácia Pythonu V Linuxe by mal mať zväčša súčasťou systému Windows 1. variant Inštalácia Pythonu z oficiálnej web stránky Použitie IDE podľa vlastného výberu Inštalácia balíčkov pomocou príkazu pip cez príkazový riadok Windows 2. variant Inštalácia distribúcie Anaconda, ktorá zjednodušuje manažment Pythonu Použitie IDE podľa vlastného výberu alebo poskytnuté Anacondou Inštalácia balíčkov pomocou príkazu conda cez príkazový riadok Anacondy Pri Anaconde sa môžu objaviť problémy so spustením => reinštalácia Windowsu alebo variant 1
Python IDLE Python IDLE je základným IDE pre Python Nainštaluje sa rovno so základným balíčkom Python Obsahuje podobný command line ako v Matlabe a tiež editor skriptov
PyCharm Je vývojové prostredie od spoločnosti Jet Brains, ktorá poskytuje vývojové prostredia aj pre mnohé ďalšie programovacie jazyky Je platené, ale existuje EDU verzia Obsahuje automatické doplňovanie kódu Má zabudovanú konzolu ako aj množstvo príkladov pre začiatočníkov v jazyku Python Obľúbené u softvérových inžinierov
Jupyter Notebook Funguje v internetovom prehliadači Dodáva sa priamo s distribúciou Anaconda
Spyder Dodáva sa priamo s distribúciou Anaconda Obľúbený vo vedeckej komunite => niekomu môže pripomínať prostredie Matlabu
Programovanie v Pythone ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
Hello World
Konzolová kalkulačka
Porovnávacie operátory, true/false
Podmienky
Cyklus While
Cyklus for
Cyklus for a funkcia range()
Zoznamy - list Zoznam sa vytvára pomocou hranatých zátvoriek a jednotlivé prvky v ňom oddelíme čiarkou Zoznam (list) môžeme vytvoriť aj funkciou range() z predošlého slajdu V Pythone funguje aj záporné indexovanie posledný prvok má index -1
Orezávanie zoznamov Jednotlivé argumenty určujúce, čo chceme vybrať, môžeme aj vynechať Môžeme teda napísať [::2], čo nám vyberie každý druhý prvok zoznamu K zoznamom existuje mnoho užitočných funkcií
Reťazce
Dvojrozmerné pole
Knižnice Knižnice pred použitím treba nainštalovať pomocou príkazového riadku pomocou príkazu pip alebo conda
Tvorba GUI V jazyku Python máme k dispozícii viaceré knižnice, pričom najpoužívanejšie sú Tk (Tkinter), Gtk, Qt a wxwidgets Tkiner je základný grafický modul jazyka Python, ktorý je dodávaný pri inštalácii Je dostupný všade, kde je Python nainštalovaný a funguje rovnako na všetkých operačných systémoch Tento modul je súčasťou všetkých verzií Pythonu Medzi jednu z nevýhod tohto modulu patrí nedostatočná dokumentácia (?)
Vizualizácia údajov v Pythone ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
Matplotlib Matplotlib je Python balíček, zameraný na vytváranie kvalitných grafov v rôznych formátoch Dokáže generovať grafy, histogramy, stĺpcové grafy, chybové grafy, rozptylové grafy - to všetko len s pár riadkami zdrojového kódu Okrem vytvárania grafov, matplotlib prichádza so súborom základných nastavení, umožňujú upravovať rôzne parametre Vďaka tomu môžeme meniť základ skoro každej vlastnosti grafu ako hrúbka čiary, farba, štýl, atď.
Matplotlib
Porovnanie Matlabu a Pythonu
Porovnanie Matlabu a Pythonu
Python a data science ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY PREDNÁŠKA 7
Scikit-learn Jednou z knižníc na prácu s dátami v Pythone je knižnica scikit-learn Táto knižnica je jednoduchá na spracovanie a analýzu dát S pomocou tejto knižnice je možné robiť klasifikáciu dát, regresiu, redukcie dimenzie, predspracovanie údajov pre strojové učenie, atď. Inštalácia: python -mpip install -U scipy python -mpip install -U scikit-learn
Lineárna regresia scikit-learn
Výpočtová inteligencia v Pythone Knižnice pre AI a Machine Learning SimpleAI - knižnica obsahujúca rôzne algoritmy pre AI Orange - nástroje pre vizualizáciu a analýzu dát PyML obsahuje funkcie pre kernelové metódy - ako napr. SVM scikit-learn - klasické metódy strojového učenia - ako napr. neurónové Siete PyBrain široká škála jednoducho použiteľných algoritmov pre strojové učenie
PyBrain Cieľom bolo spojenie algoritmov, ktoré spracúvajú dáta do jedného Modulu Modul tvorený implementáciu algoritmu a súborom parametrov, na ktorých závisí Obsahuje vstupný, výstupný a chybový buffer Moduly tvoria objetky typu Network a sú prepojené cez Connection Objekty typu Network sú takisto moduly a tak je jednoduché z nich vytvoriť zložitejšie objekty Parametre Networku sú nastavované pomocou metód triedy Trainer Trainer využíva Dataset z ktorého sa učí ideálne nastavenie parametrov
PyBrain - Dependencies Na využívanie knižnice potrebujeme mať nainštalované SciPy Knižnica obsahujúca funkcie pre matematické operácie a algoritmy Riešenie polynómov funkcia p = poly1d([3,4,5]) uloží polynóm do premennej p, následne p(4) = 69 V = np.vectorizer(func) z funkcie func(a,b) vytvorí funkciu, ktorá môže mať na vstupe aj výstupe vektor - func([0,1,2],[3,4,5]) Integrál
PyBrain - Dependencies MatplotLib Knižnica obsahujúca prostriedky na vykresľovanie širokej škály grafov Pyplot obsahuje funkcie na vyskresľovanie grafov Legend vykreslenie legendy ku grafu
Dopredné neurónové siete
Datasety Užitočné pre pohodlný prístup k trénovacím, testovacím a validačným dátam. PyBrain poskytuje sofistikovanú dátovú štruktúru umožňujúcu jednoduchšiu prácu s dátami Pre rôzne úlohy strojového učenia existujú špeciálne typy dátových súborov 4 kategórie: Supervised Najjednoduchšia forma, určená pre učenie s učiteľom Sequential Predstavuje koncept sekvencií Classification Uľahčuje problémy s klasifikáciou, zatiaľ čo vyššie uvedené sú skôr využívané na lineárnu regresiu Importance Rozšírenie sekvenčného datasetu, umožňuje váhové označenie sekvencií
Optimalizácia Nájsť najlepšie nastavenia, minimalizovať risk investície, nájsť najlepšiu stratégiu, etc... Rozdelenie optimalizačných problémov na základe premenných: Všetky reálne čísla priebežná optimalizácia Reálne čísla s hranicami obmedzujúca optimalizácia Celé čísla celočíselne programovanie Kombinácia predošlých Ostatné, napr. grafy
Black-box optimalizácia Nástroje, ktoré PyBrain používa pre najvšeobecnejšie prípady sa delia do dvoch skupín: BlackBoxOptimizer sú aplikovateľné na všetky druhy premenných super-trieda pre učiace algoritmy, ktorá považuje problémy ako BlackBox v každom kroku menia pravidlá a vyvolaním FitnessEvaluator - a získavajú fitness hodnotu ContinuouseOptimizer len na pribežnú optimalizáciu obmedzujúca trieda, ktorá predpokladá, že parametre musia byť nevyhnutne v poli spojitých hodnôt (prípadne zabalené v ParameterContainer)
Podporné učenie Úloha podporného učenia v PyBraine pozostáva z niekoľkých komponentov, ktoré medzi sebou komunikujú a to: Prostredie Agent Task Experiment
Podporné učenie komponenty Prostredie je to svet, v ktorom operuje agent (sú umiestnené v pybrain/rl/environments) Agent pozostáva z 3 častí: Controller ktorý mapuje stavy na akcie Learner updatuje parametre Controller-a na základe komunikácií so svetom Explorer vkladá prieskumné správanie akciám Task Komponent, ktorý spája agenta s prostredím taktiež určuje cieľ v prostredí a ako bude agent odmenený za svoje správanie Experiment určí ako dlho bude Task a agent bežať a spustí ich
Rozširovanie štruktúry PyBrain Layers sú to jednoduché formy modulu, môžu byť použité na implementáciu prenosných funkcií, ktoré môžu viesť až k špeciálnym vrstvám ako je SigmoidLayer Connections pracujú ako vrstvy, jediným rozdielom je, že spracovávajú dáta, ktoré nevlastnia ich hlavnou úlohou je posiela dáta z jedného vrcholu sieťového grafu na iný ParameterContainers tieto štruktúry sú realizované pomocou triedy ParameterContainer udržiavajú adaptívne parametre, ktoré môžu byť trénované v externých učiacich algoritmoch Kontrolovanie správnosti na kontrolovanie gradientu neurónovej siete PyBrain vytvoril funkciu gradientcheck()
Ukážka klasifikácie pomocou doprednej neurónovej siete
Ukážka klasifikácie pomocou doprednej neurónovej siete
Ukážka klasifikácie pomocou doprednej neurónovej siete
Ukážka klasifikácie pomocou doprednej neurónovej siete
Použité zdroje Wikipedia Oficiálna web stránky Python Jakub Huňady, František Rajnič, Michal Slezák - Výpočtová inteligencia v Pythone Juraj Pap http://udemy.com http://www.gymzv.sk/~rolik.jakob/moja/languages/python.html https://www.itnetwork.cz/