Condividi tramite


Creare un componente modello Python

Questo articolo descrive un componente nella finestra di progettazione di Azure Machine Learning.

Informazioni su come usare il componente Crea modello Python per creare un modello non sottoposto a training da uno script Python. È possibile basare il modello su qualsiasi strumento di apprendimento incluso in un pacchetto Python nell'ambiente di progettazione di Azure Machine Learning.

Dopo aver creato il modello, è possibile usare Train Model per eseguire il training del modello in un set di dati, come qualsiasi altro learner in Azure Machine Learning. Il modello sottoposto a training può essere passato a Score Model (Punteggio modello ) per eseguire stime. È quindi possibile salvare il modello sottoposto a training e pubblicare il flusso di lavoro di assegnazione dei punteggi come servizio Web.

Avviso

Attualmente, non è possibile connettere questo componente al componente Ottimizzare gli iperparametri del modello o passare i risultati con punteggio di un modello Python a Evaluate Model. Se è necessario ottimizzare gli iperparametri o valutare un modello, è possibile scrivere uno script Python personalizzato usando il componente Execute Python Script (Esegui script Python).

Configurare il componente

L'uso di questo componente richiede una conoscenza intermedia o esperta di Python. Il componente supporta l'uso di qualsiasi learner incluso nei pacchetti Python già installati in Azure Machine Learning. Vedere l'elenco di pacchetti Python preinstallati in Execute Python Script (Esegui script Python).

Nota

Prestare molta attenzione durante la scrittura dello script e assicurarsi che non vi sia alcun errore di sintassi, ad esempio l'uso di un oggetto non dichiarato o un componente non importato.

Nota

Prestare inoltre particolare attenzione all'elenco dei componenti preinstallati in Esegui script Python. Importa solo i componenti preinstallati. Non installare pacchetti aggiuntivi, ad esempio "pip install xgboost" in questo script. In caso contrario, durante la lettura dei modelli nei componenti down-stream verranno generati errori.

Questo articolo illustra come usare Create Python Model with a simple pipeline (Creare un modello Python con una pipeline semplice). Ecco un diagramma della pipeline:

Diagramma della creazione di un modello Python

  1. Selezionare Crea modello Python e modificare lo script per implementare il processo di modellazione o gestione dei dati. È possibile basare il modello su qualsiasi strumento di apprendimento incluso in un pacchetto Python nell'ambiente Azure Machine Learning.

Nota

Prestare particolare attenzione ai commenti nel codice di esempio dello script e assicurarsi che lo script segua rigorosamente il requisito, inclusi il nome della classe, i metodi e la firma del metodo. La violazione causerà eccezioni. Creare un modello Python supporta solo la creazione di un modello basato su sklearn da eseguire con training del modello.

Il codice di esempio seguente del classificatore Naive Bayes a due classi usa il pacchetto sklearn più diffuso:


# The script MUST define a class named Azure Machine LearningModel.
# This class MUST at least define the following three methods:
    # __init__: in which self.model must be assigned,
    # train: which trains self.model, the two input arguments must be pandas DataFrame,
    # predict: which generates prediction result, the input argument and the prediction result MUST be pandas DataFrame.
# The signatures (method names and argument names) of all these methods MUST be exactly the same as the following example.

# Please do not install extra packages such as "pip install xgboost" in this script,
# otherwise errors will be raised when reading models in down-stream components.

import pandas as pd
from sklearn.naive_bayes import GaussianNB


class AzureMLModel:
    def __init__(self):
        self.model = GaussianNB()
        self.feature_column_names = list()

    def train(self, df_train, df_label):
        # self.feature_column_names records the column names used for training.
        # It is recommended to set this attribute before training so that the
        # feature columns used in predict and train methods have the same names.
        self.feature_column_names = df_train.columns.tolist()
        self.model.fit(df_train, df_label)

    def predict(self, df):
        # The feature columns used for prediction MUST have the same names as the ones for training.
        # The name of score column ("Scored Labels" in this case) MUST be different from any other columns in input data.
        return pd.DataFrame(
            {'Scored Labels': self.model.predict(df[self.feature_column_names]), 
             'probabilities': self.model.predict_proba(df[self.feature_column_names])[:, 1]}
        )


  1. Connettere il componente Crea modello Python appena creato per eseguire il training del modello e il punteggio del modello.

  2. Se è necessario valutare il modello, aggiungere un componente Execute Python Script (Esegui script Python) e modificare lo script Python.

    Lo script seguente è il codice di valutazione di esempio:

    
    
    # The script MUST contain a function named azureml_main
    # which is the entry point for this component.
    
    # imports up here can be used to 
    import pandas as pd
    
    # The entry point function MUST have two input arguments:
    #   Param<dataframe1>: a pandas.DataFrame
    #   Param<dataframe2>: a pandas.DataFrame
    def azureml_main(dataframe1 = None, dataframe2 = None):
    
        from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
        import pandas as pd
        import numpy as np
    
        scores = dataframe1.ix[:, ("income", "Scored Labels", "probabilities")]
        ytrue = np.array([0 if val == '<=50K' else 1 for val in scores["income"]])
        ypred = np.array([0 if val == '<=50K' else 1 for val in scores["Scored Labels"]])    
        probabilities = scores["probabilities"]
    
        accuracy, precision, recall, auc = \
        accuracy_score(ytrue, ypred),\
        precision_score(ytrue, ypred),\
        recall_score(ytrue, ypred),\
        roc_auc_score(ytrue, probabilities)
    
        metrics = pd.DataFrame();
        metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
        metrics["Value"] = [accuracy, precision, recall, auc]
    
        return metrics,
    
    

Passaggi successivi

Vedere il set di componenti disponibili per Azure Machine Learning.