In postarea noastra anterioara, am vorbit despre cum sa implementam un serviciu „Hello world” foarte simplu, folosind Titan pentru transformarea unei bucati de cod Python intr-un punct final API gata de consum.
Acum suntem gata sa incepem sa lucram cu programe mai complexe, cum ar fi un model Python ML. Gata? Sa incepem!
In acest post, vom implementa si implementa o regresie liniara multivariata pentru a ilustra modul in care putem transforma acest model ML intr-un serviciu gata de utilizare.
Vom folosi doua biblioteci foarte comune in Stiinta datelor:
- Pandas (O biblioteca open-source pentru a gestiona si analiza structurile de date)
- Regresie liniara de la sklearn (O cutie completa de instrumente pentru analiza datelor)
Sa ne scufundam acum in codul Notebook-ului nostru.
In primul rand, importam bibliotecile mentionate mai sus:
import panda ca pd de
la sklearn.
Array
linear_model import LinearRegression
import json
Urmatorul pas este sa citim datele pe care le vom folosi in modelul nostru. In acest caz, vom folosi un set de date publicitare care contine informatii referitoare la relatia dintre diferite canale de publicitate (TV, radio si ziar) si vanzarile corespunzatoare .
In modelul nostru, vom citi fisierul CSV care contine datele dintr-un depozit public GitHub si il vom stoca intr-un cadru de date Pandas :
# Citirea setului de date dintr-o
url de repo Gitlab = “https://gitlab.com/jfuentesibanez/datasets/raw/master/regression_tutorial/advertising.
Array
csv”df = pd.read_csv (url)
Este convenabil sa faceti o scurta explorare a cadrului de date pentru a verifica continutul acestuia:
# Explorarea datelor
df.head ()
Aceasta celula va returna primele 5 randuri ale setului nostru de date:
+ – – – – + – – – – + – – – – – – + – – – – +
| TV | Radio | Ziar | Vanzari |
+ – – – – + – – – – + – – – – – – + – – – +
| | 230.1 | 37,8 | 69.
Array
2 | 22.1 |
| 44,5 | 39.3 | 45.1 | 10.
- xxxl porno onlybats.com
- porno academie sextropia.coloradoski.net
- porno 365 bioglueaesthetic.de
- porno taboo relevant.hartfordfinancialservicesgroup.net
- just porno pest-manager-report.net
- porno zoophile www.firstrate.us
- bon porno www.logicatwork.net
- periscope porno www.clearchannelbroadcasting.com
- porno gay france cityoffortworth.org
- porno hud www.xyyuwen.cn
- mariage porno robinbyrdshow.com
- porno teen brie.key20media.net
- porno xxl gang.nutritionbasics.com
- absolu porno www.timeclub.com
- porno anna polina centerpointenergy-oklahoma.biz
- porno gay français www.flamebeaux.net
- téléréalité porno perfume-bg.jrickiii.com
- porno intense frenchgourmand.matthewrasoulicpa.com
- porno soldat www.blackmalepornstars.com
- massage thai porno cycling.upnorthinvestments.org
- porno cuir diz.peacefulgarden.com
- chatte porno daretobeinspired.com
4 |
| 17.2 | 45,9 | 69,3 | 12.0 |
| 151,5 | 41.3 | 58,5 | 16,5 |
| 180,8 | 10.8 | 58.4 | 17.9 |
Acest set de date reprezinta relatia dintre investitia in diferite canale de publicitate si vanzarile corespunzatoare.
Acum, este timpul sa ne impartim setul de date pentru a-l pregati pentru antrenament sau pentru modelul nostru de regresie liniara. Impartim datele in predictori (primele 3 coloane) si iesire (ultima coloana):
# Pentru a construi modelul LR vom folosi primele trei coloane ca predictori (TV, radio si ziar) predictori = [‘TV’, ‘Radio’, ‘Ziar’] X = df [predictori] y = df [‘ Vanzari’]
Odata ce datele au fost impartite, ne putem antrena cu usurinta modelul folosind functia LinearRegression () de la sklearn, care implementeaza regresia liniara obisnuita a celor mai mici patrate (puteti gasi mai multe informatii in documentatie.)
# Fitingul si initializarea modelului lm = LinearRegression ()
model = lm.fit (X, y)
Formula de predictie poate fi scrisa ca:
Vanzari = α + β₁ * TV + β₂ * Radio + β ₃ * Ziar
Pentru a vedea coeficientii calculati pentru model, putem rula urmatoarele:
# Acum putem vedea coeficientii modelului nostru
print (f’alpha = {model.intercept_} ‘ )
print (f’betas = {model.coef_}’ )
Dupa aceea, cu modelul deja instruit, putem face cu usurinta predictii pe baza datelor de intrare arbitrare, asa cum se arata mai jos:
# Si faceti predictii pe baza datelor arbitrare
input_params = [[200, 100, 100]]
print (model.predict (input_params))
In acest fragment de cod, solicitam o predictie pentru o investitie de:
- 200 de unitati monetare in publicitatea TV
- 100 de unitati monetare in publicitatea radio
- 100 de unitati monetare in publicitate in ziare
Acum avem un model pe deplin functional!
Codul complet al caietului poate fi gasit aici:
Daca preferati, puteti clona acest depozit GitHub cu codul.
Imaginati-va acum ca doriti sa integrati acest model cu o alta aplicatie corporativa din compania dvs.
Pentru a face acest lucru, trebuie sa transformam acest model intr-un serviciu si asta vom face in continuare folosind Titan , produsul pe care l-am construit la Akoios pentru aceasta chestiune precisa.
Inainte de a putea implementa modelul, trebuie sa facem cateva aranjamente in codul nostru Python, astfel incat Titan sa poata intelege cum sa implementam modelul.
Asa cum am vazut in postarea noastra anterioara, este momentul sa „ instrumentalizam ” modelul nostru. In acest caz, trebuie sa trimitem date – valorile de intrare – catre serviciu pentru a obtine un raspuns – vanzarile asteptate -, asa ca vom folosi o metoda POST.
# POST / predictionbody = json.loads (CERERE) [‘body’] # prezice iesirea pentru un nou esantion. Functie care urmeaza sa fie expusa prin Titaninput_params = body [‘data’]
print (model.predict (input_params))
Ce se intampla in codul de mai sus? Ei bine, in primul rand, am definit metoda HTTP (POST in acest caz) si numele punctului final (predictie). Cu aceste informatii, Titan va:
- Executati tot codul Python din aceasta celula de fiecare data cand se face o cerere POST catre punctul final / predictie.
- Intoarceti rezultatul ultimei declaratii de tiparire catre apelant.
S-ar putea sa va intrebati cum puteti testa modelul si rezultatele acestuia inainte de implementare. Daca doriti sa faceti unele teste inainte de implementare, puteti crea intr-o celula o structura de date simulata pentru a reproduce informatiile care ar fi primite dupa o cerere POST:
# Obiect de cerere falsa pentru
antetele de testare API locale = {
‘content-type’: ‘application / json’
} body = {
‘data’: [[200,100,100]]
} CERERE = json.dumps ({‘headers’: headers, ‘ corp ‘: corp})
Dupa rularea acestei celule, veti putea face unele teste in celula care a fost instrumentalizata anterior.
Acum avem totul gata pentru implementarea modelului. Ca si in postarea anterioara, implementarea modelului este la fel de usoara ca rularea:
$ titan deploy
3,2,1 … Implementati!
Dupa implementare, vom avea punctul final gata de utilizare la o adresa URL ca aceasta:
https: // nume-domeniu / regresie
Puteti explora API-ul folosind interfata Swagger UI creata automat in adresa URL de mai sus.
Din acest moment, este posibil sa consumam serviciul de predictie a energiei pe care l-am dezvoltat facand doar o cerere POST de la Postman * sau orice alta aplicatie. La fel de usor ca asta!
Testarea serviciului
- Daca intampinati probleme la obtinerea rezultatelor de la Postman, incercati sa schimbati tipul de cerere din JSON brut in Text brut.
In cele din urma, amintiti-va ca puteti obtine codul acestui tutorial aici.
In acest al doilea post al seriei noastre de tutoriale am vazut cum sa cream si sa implementam un model simplu ML direct dintr-un notebook Jupyter folosind produsul nostru Titan .








