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.

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 .