Eseguire script di Machine Learning Python in Machine Learning Studio (versione classica)

SI APPLICA A:Si applicaa. Machine Learning Studio (versione classica) non si applica.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).

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 nello strumento di molti data scientist. Viene usato in ogni fase di flussi di lavoro tipici di Machine Learning, tra cui l'esplorazione dei dati, l'estrazione delle funzionalità, il training e la convalida dei modelli e la distribuzione.

Questo articolo descrive come usare il modulo Esegui script Python per usare il codice Python negli esperimenti e nei servizi Web di Machine Learning Studio (versione classica).

Uso del modulo Esegui script Python

L'interfaccia primaria di Python in Studio (classica) è tramite il modulo Esegui script Python . Accetta fino a tre input e produce fino a due output, simili al modulo Esegui script R . Il codice Python viene immesso nella casella dei parametri tramite una funzione di punto di ingresso denominata appositamente denominata azureml_main.

Eseguire il modulo Script Python

Esempio di codice Python nella casella dei parametri del modulo

Parametri di input

Gli input del 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.

La semantica più dettagliata del mapping delle porte di input ai parametri della azureml_main funzione è illustrata di seguito.

Tabella delle configurazioni delle porte di input e della firma Python risultante

Valori restituiti dall'output

La azureml_main funzione deve restituire un singolo dataframe Pandas in pacchetto 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.

Mapping delle porte di input ai parametri e al valore restituito alla porta di output

Traduzione 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 Pandas DataFrame 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 studio
Stringhe e numeri Tradotto come è
Pandas 'NA' Tradotto come "Valore mancante"
Vettori di indice Non supportato*
Nomi di colonna non stringa Chiamare str i nomi di colonna
Nomi di colonna duplicati Aggiungere 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 python scientifica ampiamente usata. Viene fornito con un massimo di 200 pacchetti Python più comuni usati nei carichi di lavoro incentrati sui dati. Studio (versione classica) non supporta attualmente 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 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".

Funzione definita dall'utente nel file di Hello.py

Viene quindi creato un file Hello.zip contenente Hello.py:

File zip contenente codice Python definito dall'utente

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 collegandolo alla terza porta di input del modulo Esegui script Python , come illustrato nell'immagine seguente.

Esperimento di esempio con Hello.zip come input per un modulo Esegui script Python

Codice Python definito dall'utente caricato come file zip

L'output del modulo indica che il file ZIP è stato estratto dal pacchetto e che la funzione print_hello è stata eseguita.

Output del modulo che mostra la funzione definita dall'utente

Accesso ai BLOB di archiviazione di Azure

È possibile accedere ai dati archiviati in un account Archiviazione BLOB di Azure usando questa procedura:

  1. Scaricare il pacchetto Archiviazione BLOB di Azure per Python in locale.
  2. Caricare il file zip nell'area di lavoro studio (classica) come set di dati.
  3. 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')
  1. Disabilitare il trasferimento sicuro richiesto nella scheda Configurazione archiviazione

Disabilitare il trasferimento sicuro richiesto nell'portale di Azure

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 che contiene il codice per valutare un'unica espressione Python.

Area di lavoro studio per un servizio Web

Espressione Python Pandas

Un servizio Web creato da questo esperimento esegue le azioni seguenti:

  1. Accettare un'espressione Python come input (come stringa)
  2. Inviare l'espressione Python all'interprete Python
  3. 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 quando usano R. Quindi l'utente deve salvare in modo esplicito eventuali tracciati in file PNG.

Per generare immagini da MatplotLib, è necessario seguire questa procedura:

  1. Passare al back-end su "AGG" dal renderer basato su Qt predefinito.
  2. Creare un nuovo oggetto figura.
  3. Ottenere l'asse e generare tutti i tracciati in esso.
  4. Salvare la figura in un file PNG.

Questo processo viene illustrato nelle immagini seguenti che creano una matrice di grafico a dispersione usando la funzione scatter_matrix in Pandas.

Codice per salvare le figure di MatplotLib nelle immagini

Fare clic su visualizza in un modulo Esegui script Python per visualizzare le figure

Visualizzazione di grafici per un esperimento di esempio usando il codice Python

È possibile restituire più figure salvandole in immagini diverse. Il runtime di Studio (versione classica) raccoglie 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 funzionalità 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:

Funzione per classificare le funzionalità 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):

Sperimentare di classificare le funzionalità nel set di dati Pima Indian Diabetes usando Python

Visualizzazione dell'output del modulo Esegui script Python

Limitazioni

Il modulo Esegui script Python presenta attualmente le limitazioni seguenti:

Esecuzione sandbox

Il runtime python è attualmente 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 di sviluppo e debug sofisticati

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 del frame di dati singolo

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.

Incapacità di personalizzare l'installazione di Python

Attualmente, è possibile aggiungere moduli Python personalizzati solo tramite il meccanismo con file ZIP descritto in precedenza. Anche se ciò è fattibile per i moduli di piccole dimensioni, è complesso per moduli di grandi dimensioni (soprattutto moduli con DLL native) o un numero elevato di moduli.

Passaggi successivi

Per ulteriori informazioni, vedere il Centro per sviluppatori di Python.