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 learner 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 per effettuare 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 Tune Model Hyperparameters 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 Esegui script Python .

Configurare il componente

L'uso di questo componente richiede conoscenze intermedie o esperti 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 preinstallato in Esegui script Python.

Nota

Prestare molta attenzione quando si scrive lo 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 attenzione all'elenco dei componenti preinstallati in Esegui script Python. Importa solo componenti preinstallati. Non installare pacchetti aggiuntivi, ad esempio "pip install xgboost" in questo script, in caso contrario gli errori verranno generati durante la lettura dei modelli nei componenti di down-stream.

Questo articolo illustra come usare Crea modello Python con una pipeline semplice. Ecco un diagramma della pipeline:

Diagramma di Creazione di 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 learner incluso in un pacchetto Python nell'ambiente Azure Machine Learning.

Nota

Prestare maggiore attenzione ai commenti nel codice di esempio dello script e assicurarsi che lo script sia strettamente conforme ai requisiti, tra cui il nome della classe, i metodi e la firma del metodo. La violazione comporta eccezioni. Creare il modello Python supporta solo la creazione di modello basato su sklearn da eseguire il training tramite Train Model.Create Python Model supporta solo la creazione di 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 popolare:


# 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 del modello di punteggio.

  2. Se è necessario valutare il modello, aggiungere un componente 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.