Convertire un notebook in uno script
Quando sono stati usati notebook per la sperimentazione e lo sviluppo, è prima necessario convertire un notebook in uno script. In alternativa, è possibile scegliere di ignorare l'uso dei notebook e lavorare solo con gli script. In entrambi i casi, durante la creazione di script sono disponibili alcuni consigli per avere codice pronto per l'ambiente di produzione.
Gli script sono ideali per i test e l'automazione nell'ambiente di produzione. Per creare uno script pronto per la produzione, è necessario:
- Rimuovere il codice nonnessente.
- Rifattorizza il codice in funzioni.
- Testare lo script nel terminale.
Rimuovere tutto il codice non essenziale
Il vantaggio principale dell'uso dei notebook è la possibilità di esplorare rapidamente i dati. Ad esempio, è possibile utilizzare le istruzioni print() e df.describe() per esplorare i dati e le variabili. Quando si crea uno script usato per l'automazione, si vuole evitare di includere il codice scritto per scopi esplorativi.
La prima cosa da fare per convertire il codice in codice di produzione consiste nel rimuovere il codice non indispensabile. In particolare quando si esegue regolarmente il codice, si vuole evitare di eseguire nulla di non importante per ridurre i costi e i tempi di calcolo.
Rifattorizzare il codice in funzioni
Quando si usa il codice nei processi aziendali, si vuole che il codice sia facile da leggere in modo che chiunque possa gestirlo. Un approccio comune per semplificare la lettura e il test del codice consiste nell'usare le funzioni.
Si supponga, ad esempio, di usare il codice di esempio seguente in un notebook per leggere e dividere i dati:
# read and visualize the data
print("Reading data...")
df = pd.read_csv('diabetes.csv')
df.head()
# split data
print("Splitting data...")
X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness','SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
Poiché le funzioni consentono anche di testare parti del codice, è consigliabile creare più funzioni più piccole, anziché una funzione di grandi dimensioni. Se si vuole testare una parte del codice, è possibile scegliere di testare solo una piccola parte ed evitare di eseguire più codice del necessario.
È possibile effettuare il refactoring del codice illustrato nell'esempio in due funzioni:
- Leggi i dati
- Suddividere i dati
Un esempio di codice sottoposto a refactoring può essere:
def main(csv_file):
# read data
df = get_data(csv_file)
# split data
X_train, X_test, y_train, y_test = split_data(df)
# function that reads the data
def get_data(path):
df = pd.read_csv(path)
return df
# function that splits the data
def split_data(df):
X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness',
'SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
return X_train, X_test, y_train, y_test
Annotazioni
Avrai notato che anche il codice non necessario è stato omesso nel codice sottoposto a refactoring. È possibile scegliere di usare print istruzioni nel codice di produzione se si esamina l'output dello script e si vuole assicurarsi che tutto il codice venga eseguito come previsto. Tuttavia, quando si sa che non si sta andando a esaminare l'output di uno script in un terminale, è consigliabile rimuovere qualsiasi codice che non ha alcun scopo.
Testare lo script
Prima di usare gli script negli ambienti di produzione, ad esempio integrandoli con pipeline di automazione, è necessario verificare se gli script funzionano come previsto.
Un modo semplice per testare lo script consiste nell'eseguire lo script in un terminale. Nell'area di lavoro di Azure Machine Learning è possibile eseguire rapidamente uno script nel terminale dell'istanza di calcolo.
Quando si apre uno script nella pagina Notebooks di Azure Machine Learning Studio, è possibile scegliere di salvare ed eseguire lo script nel terminale.
In alternativa, è possibile passare direttamente al terminale dell'istanza di calcolo. Passare alla pagina Calcolo e selezionare il terminale dell'istanza di calcolo da usare. È possibile usare il comando seguente per eseguire uno script Python denominato train.py:
python train.py
Gli output delle istruzioni print vengono visualizzati nel terminale. Eventuali possibili errori vengono visualizzati anche nel terminale.