Eseguire script di Machine Learning Python in Machine Learning Studio (versione classica)
SI APPLICA A: Machine Learning Studio (versione classica) di Azure Machine Learning
Importante
Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.
A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).
- Vedere le informazioni sullo spostamento di progetti di apprendimento automatico da ML Studio (versione classica) ad Azure Machine Learning.
- Scoprire di più su Azure Machine Learning
La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.
Python è uno strumento prezioso nel petto degli strumenti di molti data scientist. Viene usato in ogni fase dei tipici flussi di lavoro di Machine Learning, tra cui l'esplorazione dei dati, l'estrazione di funzionalità, il training e la convalida dei modelli e la distribuzione.
Questo articolo descrive come usare il modulo Execute Python Script (Esegui script Python) per usare il codice Python negli esperimenti e nei servizi Web di Machine Learning Studio (versione classica).
Uso del modulo Execute Python Script (Esegui script Python)
L'interfaccia principale per Python in Studio (versione classica) è tramite il modulo Execute Python Script (Esegui script Python). Accetta fino a tre input e produce fino a due output, simili al modulo Execute R Script ( Esegui script R). Il codice Python viene immesso nella casella dei parametri tramite una funzione di punto di ingresso denominata appositamente denominata azureml_main
.
Parametri di input
Gli input per il modulo Python vengono esposti come dataframe Pandas. La azureml_main
funzione accetta fino a due dataframe Pandas facoltativi come parametri.
Il mapping delle porte di input ai parametri della funzione è di tipo posizionale:
- La prima porta di input connessa è mappata al primo parametro della funzione.
- Il secondo input, se connesso, è mappato al secondo parametro della funzione.
- Il terzo input viene usato per importare moduli Python aggiuntivi.
Di seguito è illustrata una semantica più dettagliata del mapping delle porte di input ai parametri della azureml_main
funzione.
Valori restituiti dall'output
La azureml_main
funzione deve restituire un singolo dataframe Pandas incluso in una sequenza Python, ad esempio una tupla, un elenco o una matrice NumPy. Il primo elemento di questa sequenza viene restituito alla prima porta di output del modulo. La seconda porta di output del modulo viene usata per le visualizzazioni e non richiede un valore restituito. Questo schema è illustrato di seguito.
Conversione dei tipi di dati di input e output
I set di dati di Studio non sono uguali a Panda DataFrame. Di conseguenza, i set di dati di input in Studio (versione classica) vengono convertiti in DataFrame Pandas e i dataframe di output vengono convertiti in set di dati di Studio (versione classica). Durante questo processo di conversione vengono eseguite anche le traduzioni seguenti:
Tipo di dati Python | Procedura di traduzione di Studio |
---|---|
Stringhe e numeri | Tradotto così come è |
Pandas 'NA' | Tradotto come "Valore mancante" |
Vettori di indice | Non confermato* |
Nomi di colonna non stringa | Chiamare str sui nomi delle colonne |
Nomi di colonna duplicati | Aggiungi suffisso numerico: (1), (2), (3) e così via. |
*Tutti i frame di dati di input nella funzione Python hanno sempre un indice numerico a 64 bit compreso tra 0 e il numero di righe meno 1
Importazione di moduli di script Python esistenti
Il back-end usato per eseguire Python si basa su Anaconda, una distribuzione scientifica di Python ampiamente usata. Viene fornito con quasi 200 dei pacchetti Python più comuni usati nei carichi di lavoro incentrati sui dati. Studio (versione classica) attualmente non supporta l'uso di sistemi di gestione pacchetti come Pip o Conda per installare e gestire librerie esterne. Se si trova la necessità di incorporare librerie aggiuntive, usare lo scenario seguente come guida.
Un caso d'uso comune consiste nell'incorporare gli script Python esistenti in esperimenti di Studio (versione classica). Il modulo Execute Python Script accetta un file ZIP contenente i moduli Python nella terza porta di input. Il file viene decompresso in fase di esecuzione dal framework di esecuzione e il contenuto viene aggiunto al percorso della libreria dell'interprete Python. La funzione del punto di ingresso azureml_main
può quindi importare questi moduli direttamente.
Si consideri ad esempio il file Hello.py contenente una semplice funzione "Hello, World".
Viene quindi creato un file Hello.zip contenente Hello.py:
Caricare il file ZIP come set di dati in Studio (versione classica). Creare ed eseguire quindi un esperimento che usa il codice Python nel file Hello.zip allegandolo alla terza porta di input del modulo Execute Python Script (Esegui script Python), come illustrato nell'immagine seguente.
L'output del modulo indica che il file ZIP è stato estratto dal pacchetto e che la funzione print_hello
è stata eseguita.
Accesso ai BLOB di Archiviazione di Azure
È possibile accedere ai dati archiviati in un account Archiviazione BLOB di Azure seguendo questa procedura:
- Scaricare il pacchetto Archiviazione BLOB di Azure per Python in locale.
- Caricare il file ZIP nell'area di lavoro di Studio (versione classica) come set di dati.
- Creare l'oggetto BlobService con
protocol='http'
from azure.storage.blob import BlockBlobService
# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
- Disabilitare il trasferimento sicuro necessario nella scheda Delle impostazioni di configurazione dell'archiviazione
Rendere operativi gli script Python
Tutti i moduli Execute Python Script (Esegui script Python) usati in un esperimento di assegnazione dei punteggi vengono chiamati al momento della pubblicazione come servizio Web. Ad esempio, l'immagine seguente mostra un esperimento di assegnazione dei punteggi contenente il codice per valutare una singola espressione Python.
Un servizio Web creato da questo esperimento esegue le azioni seguenti:
- Accettare un'espressione Python come input (come stringa)
- Inviare l'espressione Python all'interprete Python
- Restituisce una tabella contenente sia l'espressione che il risultato valutato.
Utilizzo di visualizzazioni
I tracciati creati con MatplotLib possono essere restituiti dallo script Esegui Python. Tuttavia, i tracciati non vengono reindirizzati automaticamente alle immagini così come sono quando si usa R. L'utente deve quindi salvare in modo esplicito eventuali tracciati in file PNG.
Per generare immagini da MatplotLib, è necessario seguire questa procedura:
- Impostare il back-end su "AGG" dal renderer basato su Qt predefinito.
- Creare un nuovo oggetto figura.
- Ottenere l'asse e generarne tutti i tracciati.
- Salvare la figura in un file PNG.
Questo processo è illustrato nelle immagini seguenti che creano una matrice del grafico a dispersione usando la funzione scatter_matrix in Pandas.
È possibile restituire più figure salvandole in immagini diverse. Il runtime di Studio (versione classica) preleva tutte le immagini e le concatena per la visualizzazione.
Esempi avanzati
L'ambiente Anaconda installato in Studio (versione classica) contiene pacchetti comuni, ad esempio NumPy, SciPy e Scikits-Learn. Questi pacchetti possono essere usati in modo efficace per l'elaborazione dei dati in una pipeline di Machine Learning.
Ad esempio, l'esperimento e lo script seguenti illustrano l'uso degli studenti di ensemble in Scikits-Learn per calcolare i punteggi di importanza delle caratteristiche per un set di dati. I punteggi possono essere usati per eseguire la selezione delle funzionalità con supervisione prima di essere inseriti in un altro modello.
Di seguito è illustrata la funzione Python usata per calcolare i punteggi di rilevanza e ordinare le funzioni in base ai punteggi:
L'esperimento seguente calcola e restituisce i punteggi di importanza delle funzionalità nel set di dati "Pima Indian Diabetes" in Machine Learning Studio (versione classica):
Limiti
Il modulo Execute Python Script (Esegui script Python) presenta attualmente le limitazioni seguenti:
Esecuzione in modalità sandbox
Il runtime Python è attualmente in modalità sandbox e non consente l'accesso alla rete o al file system locale in modo permanente. Tutti i file salvati localmente sono isolati ed eliminati al termine del modulo. Il codice Python non è in grado di accedere alla maggior parte delle directory nel computer in cui è in esecuzione, ad eccezione della directory corrente e delle relative sottodirectory.
Mancanza di supporto sofisticato per lo sviluppo e il debug
Il modulo Python non supporta attualmente le funzionalità dell'IDE, ad esempio IntelliSense e debug. In caso di errore del modulo durante il runtime, è disponibile l'analisi completa dello stack Python. È tuttavia necessario visualizzarla nel log di output per il modulo. Al momento si consiglia di sviluppare ed eseguire il debug degli script Python in un ambiente come IPython e quindi importare il codice nel modulo.
Output singolo del frame di dati
Al punto di ingresso Python è consentito restituire un singolo frame di dati come output. Non è attualmente possibile restituire oggetti Python arbitrari, ad esempio modelli sottoposti a training direttamente al runtime di Studio (versione classica). Come per Execute R Script (Esegui script R), che presenta le stesse limitazioni, in molti casi è possibile inserire oggetti in una matrice di byte e quindi restituirla all'interno di un frame di dati.
Impossibilità di personalizzare l'installazione di Python
Attualmente, è possibile aggiungere moduli Python personalizzati solo tramite il meccanismo con file ZIP descritto in precedenza. Anche se questo è fattibile per moduli di piccole dimensioni, è complesso per i moduli di grandi dimensioni (in particolare moduli con DLL native) o un numero elevato di moduli.
Passaggi successivi
Per ulteriori informazioni, vedere il Centro per sviluppatori di Python.