Sunteți pe pagina 1din 46

Python 102

Curs 5 - Introducere în ML
09.03.2021
Despre Hackademy
● Cursuri: CCNA, Python 101, Web 101.
● Evenimente:
AWG LAN-party

ACADNET

IOIOI IOIOI

Hackademy Treasure Hunt


Despre echipă
Instructori:
Pavel Mateescu Radu Minea

Responsabili laboratoare:
Mara Nicolae Diana Duțică

Infrastructură:
Laurențiu Olteanu Răzvan Matișan

Interni:
Radu Chivereanu Horia Ignat
Despre voi
De ce ați ales acest curs?
Ce pasiuni aveți?
Despre curs
Pentru început...
● 📚 Zoom + Discord
○ Curs
○ Materiale și anunțuri
● 🕐 Marți, ora 18:00 - 21:00
○ Quiz de recapitulare din cursul precedent
○ Curs + Demo
○ Laborator
● 󰢧 Puneți întrebări oricând
● 👀 Feedback la fiecare curs
Calendarul cursului
Nr. curs Titlu Săptămână
1 Introducere în Python 09.03.2021

2 Funcții și colecții 16.03.2021

3 Programare orientată pe obiecte 23.03.2021

4 Module 30.03.2021

5 Jocuri în Python 06.04.2021

6 Recapitulare prin colaborare 13.04.2021

7 Examen 20.04.2021

7’ Workshop Pitch-uri 27.04.2021

8 Prezentarea Proiectelor 04.05.2021


Punctaj
● Parcurs - 2p + 1p bonus
○ Laboratoare - 2p
■ Submission până sâmbătă 23:55:00
○ Quiz Bonus - 1p
● Proiect - 4p
○ Prezentare - 2p
○ Calitatea codului - 1p
○ Demo - 1p
● Examen - 4p + 1p bonus
○ Hackerrank

Minimum 7p pentru promovarea cursului.


Introducere în ML
Ce este Machine Learning?
ML != AI
“Machine Learning is the science (and art) of
programming computers so they can learn from
data.”

“What makes Machine Learning so interesting is


the fact that it can not only learn from the
algorithms that you provide; in fact, it can
generate new algorithms from the data that you
have given as the previous algorithm.”
De ce Machine Learning?
Traditional approach
ML approach
(Some) advantages
ML-ul este foarte bun atunci cand:
● vrei sa rezolvi o problema care, in
mod normal, necesita multe (chiar
prea multe) reguli (if, if, if, ...);
● nu exista nici o solutie traditionala
la o problema foarte complexa;
● primesti noi date dupa ce ai venit
deja cu o solutie (=> flexibil).
Tipuri de Machine Learning
Clasificare
I. a. Supervised
b. Unsupervised
c. Semisupervised
d. Reinforcement Learning

II. a. Online learning


b. Offline/batch learning

III. a. Instance-based learning


b. Model-based learning
TODO:
- De gasit o poza cu primul tip de
clasificare si cu algoritmii lor
-
Pauză?
End-to-end ML project ->
-> DEMO Jupyter Notebook

Pasi:
1. Look at the big picture.
2. Get the data.
3. Discover and visualize the data to gain
insights.
4. Prepare the data for Machine Learning
algorithms.
5. Select a model and train it.
Ce tipuri de framework-uri
exista?
Frontend:
● React
● React Native
● Angular

Backend:
● Django
● Spring
● NodeJS
Backend
Toata logica din spatele unei aplicatii mobile
sau web

Se foloseste acelas backend pentru ambele


tipuri de aplicatii

El este cod care ruleaza continuu pe un


server, primeste interograri si returneaza
raspunsuri
Cum functioneaza un
Backend
1. Baza de date
a. Low level data manipulation:
i. Insertion
ii. Updates
iii. Deletion
2. Framework
a. DB Querys
b. Link routing
3. API:
a. Endpoints logic
Django MVT
Model View Template

● Model - abstractizare la tabela din DB


● View - executa logica si interactioneaza
cu un Model pentru a prelucra date.
Randeaza un Template
● Template - Un strat de prezentare folosit
pentru interfata cu utilizatorul
Django ORM
● Abstractizare peste stratul de baza de
date

● Cod Python care genereaza cod SQL


Admin page
Django ofera o pagina de admin configurabila

Contine actiuni definite de dezvoltator care


sunt folosite de un administrator asupra
unor tabele din DB, fara a avea acces in mod
direct la DB
Structura unui proiect
settings.py
Fisier de configuratii pentru server:

● Applicatii
● Tipul bazei de date
● Rute de sistem
● Variabile de environment
urls.py
Fisier pentru rute

● Leaga un url de un view

Exemplu:
`url(r'^extract/$', views.extract, name='extract')`
● - ruta
● - view-ul apelat
● - numele rutei
manage.py
Un script folosit pentru a interactiona cu un
proiect in Django

Ex:
`python manage.py runserver 0:8080`
`python manage.py shell`
`python manage.py makemigrations`
`python manage.py migrate`
virtual_env/
Un environment de Python izolat de altele
sau de versiunea de system impreuna cu
bibliotecile instalate

More here
Frontend din django
● Se folosesc template-uri, sunt compuse
din fisiere:
○ Html
○ CSS
○ JS

● Se pot folosi pentru pagini web, pentru


content din cadrul unui email, etc.
templates/
● Director ce contine fisiere .html

● Contin Template tags

● Structura:
templates
├──accounts
│ ├──signup.html
│ └──profile.html
└──configurator
├──configurator.html
└──listings.html
static/
● Director ce contine fisiere statice: imagini,
sripturi de JavaScript, fisiere de design CSS
● Structura:
static
├──accounts
│ ├──avatar.png
│ ├──script.js
│ └──profile.css
├──configurator
│ ├──logo.png
│ ├──script.js
│ └──configurator.css
└──logo.png
media/
● Director ce contine fisiere incarcate prin
serviciu de upload
● In mediu de productie mari se folosesc
servicii de stocare (Blob Storage)
● Structura:
templates
├──accounts
│ ├──user1_avatar.png
│ └──user2_avatar.png
└──configurator
├──audi.png
└──audi_ jgksfa7tbkrb27f.png
apps/
Un proiect Django contine mai multe aplicatii.

`python manage.py startapp <app_name>`

O aplicatie dintr-un proiect contine fisiere cu cod


strict folosit in cadrul ei precum:
● views.py
● models.py
● admin.py

Mai multe detalii aici.


views.py
Logica apelata cand se face un request pe un link
setat in urls.py
{% for brand in brands %}
def brand_table(request):
<div class="card">
template_name = 'configurator/configurator.html'
<h5 class="card-title">{{ brand.name }}</h5>
brands = Carbrand.objects.all()
<img class="card-img-top" src="{{ brand.logo.url }}">
context = {'brands' : brands}
</div>
return render(request, template_name, context)
{% endfor %}

templates/configurator/configurator.py
apps/configurator/views.py

Returneaza un obiect de tip render care contine:


● request-ul facut
● path-ul pana la template-ul care trebuie randat
● context-ul, adica obiecte si atribute care pot fi
folosite cu template tags
models.py
Fiecare clasa reprezinta o tabela din baza de
date.
Tipuri de campuri:
● CharField() class Carbrand(models.Model):
name = models.CharField(max_length=50, default='Audi')

● DateField() logo = models.ImageField(upload_to="configurator/brands")

● IntegerField() def __str__(self):


return self.name

● EmailField()
● FileField()
Mai multe aici
models.py
Campuri relationale:
● Many-to-one:
○ ForeignKey()
● Many-to-many:
○ ManyToManyField()

O diagrama buna cu relatii intre tabele


admin.py
Aici se definesc actiuni care pot fi folosite in pagina
de admin

Un exemplu de clasa cu o actiune

O pagina a unei actiuni se foloseste de un template


care este definit de dezvoltator

Actiunile si modelele trebuie inregistrate in pagina


de admin:
admin.site.register(Carbrand)
Pauză?
Întrebări?
Development setup
1. Facem un venv
2. Facem un proiect Django
3. Facem structura de directoare
4. Facem o aplicatie
5. Actualizam setarile

Folosim:
● https://yts.mx/api pentru lista de filme
● https://webtorrent.io/ pentru streaming
Demo

S-ar putea să vă placă și