top of page

Creare un app web di intelligenza artificiale in 5 minuti

In questo articolo imparerai a esportare i tuoi modelli e a usarli al di fuori di un ambiente Jupyter Notebook. Costruirai una semplice applicazione Web in grado di inserire l'input dell'utente in un modello di apprendimento automatico e visualizzare una previsione di output per l'utente.


L'anno scorso abbiamo assistito a un massiccio aumento dell'ambito dei ruoli relativi ai dati. Tuttavia, molti professionisti dei dati si concentrano maggiormente sulla creazione di modelli e trascurano altri aspetti importanti del ciclo di vita della scienza dei dati. Questo può portare a una mancanza di capacità nell'implementazione e nella gestione effettiva dei modelli, rendendoli inutilizzabili per le aziende.


In questo articolo, il team di Intelligenza Artificiale Italia ti guiderà attraverso i passi per creare un'applicazione web di intelligenza artificiale in soli 5 minuti. Impararerai come esportare e utilizzare i tuoi modelli al di fuori di un ambiente Jupyter Notebook, creare un'interfaccia user-friendly per l'input dell'utente e visualizzare le previsioni di output del modello.


Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti

In particolare, ti mostreremo come:

  • Creare e ottimizzare un modello di machine learning per risolvere un problema di classificazione

  • Serializzare e salvare i modelli ML per un utilizzo futuro

  • Caricare questi modelli in ambienti diversi, permettendoti di lavorare oltre i confini di un Jupyter Notebook

  • Creare un'applicazione web utilizzando Streamlit da un modello di machine learning.

Con queste competenze, sarai in grado di creare un'applicazione web funzionale di intelligenza artificiale in pochissimo tempo, generando valore per la tua azienda e facendo la differenza nell'utilizzo dei dati. Non perdere l'occasione di diventare un professionista completo nell'ambito dei dati e inizia a creare la tua app di intelligenza artificiale oggi!


L'app Web prenderà come input gli indicatori demografici e di salute di un utente e genererà una previsione sul fatto che svilupperanno malattie cardiache nei prossimi dieci anni


Passaggio 1: Creare un app web con IA

Il Framingham Heart Study è uno studio cardiovascolare a lungo termine dei residenti di Framingham, Massachusetts. È stata condotta una serie di studi clinici su un gruppo di pazienti e sono stati registrati fattori di rischio come il BMI, la pressione sanguigna e i livelli di colesterolo.


Questi pazienti hanno riferito a un centro di test ogni pochi anni per fornire informazioni sanitarie aggiornate. In questo tutorial, utilizzeremo un set di dati del Framingham Heart Study per prevedere se i pazienti nello studio svilupperanno malattie cardiache tra dieci anni. Può essere ottenuto su richiesta dal sito Web BioLincc e comprende i fattori di rischio di circa 3600 pazienti.



Passaggio 2: Creare un app web con IA

Devi avere un IDE Python installato sul tuo dispositivo. Se generalmente lavori all'interno di un Jupyter Notebook, assicurati di installare un altro IDE o un editor di testo. Creeremo un'applicazione Web utilizzando Streamlit, che non può essere eseguita utilizzando un notebook.


Suggerisco di scrivere il codice per creare e salvare il modello in Jupyter (Passaggio 3 e Passaggio 4). Quindi, passa a un altro IDE per caricare il tuo modello ed eseguire l'applicazione (passaggio 5).


Se non ne hai già uno installato, ecco alcune opzioni tra cui puoi scegliere:


Passaggio 3: Creare un app web con IA

Assicurati di scaricare questo set di dati. Quindi, importa la libreria Pandas e carica il dataframe.


import pandas as pd
framingham = pd.read_csv('framingham.csv')
framingham = framingham.dropna()
framingham.head()

Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti

Dando un'occhiata all'inizio del dataframe, nota che ci sono 15 fattori di rischio. Queste sono le nostre variabili indipendenti e le useremo per prevedere l'insorgenza di malattie cardiache tra dieci anni ( TenYearCHD) .


Ora, diamo un'occhiata alla nostra variabile target:


framingham['TenYearCHD'].value_counts()

Si noti che ci sono solo due valori in questa colonna: 0 e 1. Un valore 0 indica che il paziente non ha sviluppato CHD in dieci anni e un valore 1 indica che l'ha fatto.

Anche il set di dati è abbastanza sbilanciato. Ci sono 3101 pazienti con esito 0 e solo 557 pazienti con esito 1.


Per garantire che il nostro modello non venga addestrato su un set di dati sbilanciato e preveda la classe di maggioranza il 100% delle volte, eseguiremo un sovracampionamento casuale sui dati di addestramento. Quindi, inseriremo un classificatore foresta casuale su tutte le variabili nel dataframe.


from sklearn.model_selection import train_test_split
from imblearn.over_sampling import RandomOverSampler
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score

X = framingham.drop('TenYearCHD',axis=1)
y = framingham['TenYearCHD']

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.20)

oversample = RandomOverSampler(sampling_strategy='minority')

X_over, y_over = oversample.fit_resample(X_train,y_train)


rf = RandomForestClassifier()
rf.fit(X_over,y_over)
 

Ora, valutiamo le prestazioni del modello sul set di test:


preds = rf.predict(X_test)
print(accuracy_score(y_test,preds))
 

La precisione finale del nostro modello è di circa 0,83. Non spaventarti o entusiasmarti se è un po meno o un po di più...

Passaggio 4: Creare un app web con IA

Salviamo il classificatore di foreste casuali che abbiamo appena creato. Useremo la libreria Joblib per fare questo, quindi assicurati di averla installata.


import joblib 
joblib.dump(rf, 'fhs_rf_model.pkl') 

Questo modello è facilmente accessibile in diversi ambienti e può essere utilizzato per fare previsioni su dati esterni.

Passaggio 5: creazione dell'app Web

Creazione dell'interfaccia utente

Infine, possiamo iniziare a costruire un'applicazione web utilizzando il modello creato sopra. Assicurati di aver installato la libreria Streamlit prima di iniziare.

Se stavi usando un notebook Jupyter per creare il classificatore, ora devi passare a un IDE Python diverso. Crea un file chiamato streamlit_fhs.py.


La tua directory dovrebbe contenere i seguenti file:

Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti

Quindi, importa le seguenti librerie nel tuo file .py :


import streamlit as st
import joblib
import pandas as pd

Creiamo un'intestazione per la nostra applicazione web ed eseguiamola per verificare se tutto funziona correttamente:

st.write("# Previsione di malattie cardiache in 10 anni")


Per eseguire l'app Streamlit, digita il seguente comando nel terminale:

streamlit run streamlit_fhs.py

Mi raccomando se chiudi il terminale l'app non funzionerà più. Ora vai a http://localhost:8501 dove risiede la tua app. Dovresti vedere una pagina simile a questa:



Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti

Grande! Questo significa che tutto funziona.

Ora, creiamo caselle di input per consentire agli utenti di inserire i propri dati (età, sesso, BP, ecc.).


Ecco come creare un menu a discesa a scelta multipla in Streamlit per consentire agli utenti di selezionare il proprio sesso ( questo è un codice di esempio. Elimina questa riga una volta eseguita, l'esempio completo in italiano è disponibile di poco più giù) :


gender = st.selectbox("Enter your gender",["Male", "Female"])

Passa di nuovo all'app Streamlit e aggiorna la pagina. Vedrai apparire questa casella a discesa sullo schermo:



Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti


Ricorda, abbiamo 15 variabili indipendenti che dobbiamo raccogliere dall'utente.

Copia le seguenti righe di codice per creare caselle di input in cui gli utenti possono inserire i dati. Divideremo la pagina in tre colonne per rendere l'app visivamente più accattivante.



col1, col2, col3 = st.columns(3)

sesso = col1.selectbox("Inserisci il tuo sesso",["Maschio", "Femmina"])

età = col2.number_input("Inserisci la tua età")
istruzione = col3.selectbox("Qualifica accademica più alta",["Diploma di scuola superiore", "Laurea triennale", "Laurea magistrale", "Dottorato"])

fumatore = col1.selectbox("Sei attualmente un fumatore?",["Sì","No"])

anniFumando = col2.number_input("Numero di sigarette fumate al giorno")

BPFarmaci = col3.selectbox("Sei attualmente in cura con farmaci per la pressione arteriosa?",["Sì","No"])

ictus = col1.selectbox("Hai mai avuto un ictus?",["Sì","No"])

ipertensione = col2.selectbox("Hai l'ipertensione?",["Sì","No"])

diabete = col3.selectbox("Hai il diabete?",["Sì","No"])

colesterolo = col1.number_input("Inserisci il tuo livello di colesterolo")

pressione_sist = col2.number_input("Inserisci la tua pressione sistolica")

pressione_diast = col3.number_input("Inserisci la tua pressione diastolica")

bmi = col1.number_input("Inserisci il tuo BMI")

frequenza_cardiaca = col2.number_input("Inserisci la tua frequenza cardiaca a riposo")

glucosio = col3.number_input("Inserisci il tuo livello di glucosio")

Infine, dobbiamo aggiungere un pulsante " Prevedi " in fondo alla pagina. Una volta che gli utenti fanno clic su questo pulsante, verrà visualizzato l'output. Ma lo facciamo dopo aver caricato il modello.


Fare previsioni

L'interfaccia dell'app è pronta. Ora, tutto ciò che dobbiamo fare è raccogliere l'input dell'utente ogni volta che entra nel sistema. Dobbiamo passare questi dati al nostro classificatore per elaborare una previsione di output.


L'input dell'utente è ora memorizzato nelle variabili che abbiamo create sopra: età, sesso, istruzione, ecc.


Tuttavia, questo input non è in un formato che possa essere facilmente inserito dal classificatore. Stiamo raccogliendo stringhe sotto forma di domande Sì/No , e questo deve essere codificato nello stesso modo in cui lo erano i dati di addestramento.


Eseguire le seguenti righe di codice per trasformare i dati di input dell'utente:




if st.button('Prevedi'):

    df_pred = pd.DataFrame([[ sesso, età, istruzione, fumatore, anniFumando, BPFarmaci, ictus, ipertensione, diabete, colesterolo, pressione_sist, pressione_diast, bmi, frequenza_cardiaca, glucosio]],
    columns= ['genere','età','titolo di studio','fumatore attuale','sigarette al giorno','medicazione per pressione sanguigna','ictus pregresso','ipertensione','diabete','colesterolo totale','pressione sistolica','pressione diastolica','indice di massa corporea','frequenza cardiaca','livello di glucosio'])

    df_pred['genere'] = df_pred['genere'].apply(lambda x: 1 if x == 'Maschio' else 0)

    df_pred['ipertensione'] = df_pred['ipertensione'].apply(lambda x: 1 if x == 'Sì' else 0)

    df_pred['ictus pregresso'] = df_pred['ictus pregresso'].apply(lambda x: 1 if x == 'Sì' else 0)

    df_pred['diabete'] = df_pred['diabete'].apply(lambda x: 1 if x == 'Sì' else 0)

    df_pred['medicazione per pressione sanguigna'] = df_pred['medicazione per pressione sanguigna'].apply(lambda x: 1 if x == 'Sì' else 0)

    df_pred['fumatore attuale'] = df_pred['fumatore attuale'].apply(lambda x: 1 if x == 'Sì' else 0)

    def trasforma(data):
        risultato = 3
        if(data=='Diploma di scuola superiore'):
            risultato = 0
        elif(data=='Laurea triennale'):
            risultato = 1
        elif(data=='Laurea specialistica/magistrale'):
            risultato = 2
        return(risultato)

    df_pred['titolo di studio'] = df_pred['titolo di studio'].apply(trasforma)


Possiamo semplicemente caricare il modello che abbiamo salvato in precedenza e usarlo per fare previsioni sui valori inseriti dall'utente:


    model = joblib.load('fhs_rf_model.pkl') 
    prediction = model.predict(df_pred)

Infine, dobbiamo visualizzare queste previsioni sullo schermo.

Passa alla riga di codice in cui hai creato il pulsante di previsione in precedenza e modificalo come mostrato di seguito:



    if(prediction[0]==0):
        st.write('<p class="big-font">Probabilmente non svilupperai malattie cardiache nei prossimi 10 anni.</p>',unsafe_allow_html=True)
    else:
        st.write('<p class="big-font">Probabilmente svilupperai malattie cardiache nei prossimi 10 anni.</p>',unsafe_allow_html=True)

Queste modifiche sono state aggiunte in modo che l'output venga visualizzato solo quando l'utente fa clic sul pulsante Predict. Inoltre, vogliamo che il testo venga visualizzato all'utente invece di mostrare loro solo i valori di previsione (0 e 1).


Salva tutto il tuo codice e aggiorna di nuovo la tua pagina, e vedrai l'applicazione completata sullo schermo. Aggiungi numeri di input casuali e fai clic sul pulsante Prevedi per assicurarti che tutto funzioni:



Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti
Creare un app web di intelligenza artificiale in 5 minuti



In questo articolo abbiamo visto come utilizzare Streamlit per creare un'applicazione web di Machine Learning interattiva. Abbiamo utilizzato un modello di classificazione per prevedere il rischio di sviluppare malattie cardiache in un periodo di 10 anni. Abbiamo iniziato creando un'interfaccia utente semplice per raccogliere i dati dell'utente e utilizzando i dati raccolti per effettuare una previsione. Inoltre, abbiamo visto come utilizzare alcune funzionalità di Streamlit per rendere l'interfaccia utente più accattivante e coinvolgente.


In un prossimo articolo, vedremo come pubblicare questa applicazione online in modo che possa essere utilizzata da un pubblico più ampio. Ci saranno diverse opzioni disponibili, come l'utilizzo di servizi di cloud computing come AWS o GCP, o l'utilizzo di servizi di hosting specifici per applicazioni web come Heroku o Zeit.


Ci concentreremo sui passi necessari per configurare il tuo ambiente di produzione e su come rendere sicura e scalabile la tua applicazione. Inoltre, vedremo come monitorare le prestazioni dell'applicazione e come risolvere eventuali problemi. In generale, ti fornirò tutte le informazioni necessarie per trasformare la tua applicazione in un prodotto pronto per il lancio.


PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page