Skapa Python-modellkomponent

I den här artikeln beskrivs en komponent i Azure Machine Learning-designern.

Lär dig hur du använder komponenten Skapa Python-modell för att skapa en otränad modell från ett Python-skript. Du kan basera modellen på alla elever som ingår i ett Python-paket i Azure Machine Learning-designermiljön.

När du har skapat modellen kan du använda Träna modell för att träna modellen på en datauppsättning, precis som andra elever i Azure Machine Learning. Den tränade modellen kan skickas till Poängsätta modell för att göra förutsägelser. Du kan sedan spara den tränade modellen och publicera bedömningsarbetsflödet som en webbtjänst.

Varning

För närvarande går det inte att ansluta den här komponenten till komponenten Tune Model Hyperparameters eller skicka det poängsatte resultatet av en Python-modell till Utvärdera modell. Om du behöver justera hyperparametrarna eller utvärdera en modell kan du skriva ett anpassat Python-skript med hjälp av komponenten Execute Python Script (Kör Python-skript ).

Konfigurera komponenten

Användning av den här komponenten kräver mellanliggande eller expertkunskaper om Python. Komponenten stöder användning av alla elever som ingår i De Python-paket som redan är installerade i Azure Machine Learning. Se listan över förinstallerade Python-paket i Kör Python-skript.

Anteckning

Var mycket försiktig när du skriver skriptet och se till att det inte finns något syntaxfel, till exempel att använda ett objekt som inte deklarerats eller en oimporterad komponent.

Anteckning

Var också extra uppmärksam på listan över förinstallerade komponenter i Kör Python-skript. Importera endast förinstallerade komponenter. Installera inte extra paket som "pip install xgboost" i det här skriptet, annars utlöses fel vid läsning av modeller i down-stream-komponenter.

Den här artikeln visar hur du använder Skapa Python-modell med en enkel pipeline. Här är ett diagram över pipelinen:

Diagram över Skapa Python-modell

  1. Välj Skapa Python-modell och redigera skriptet för att implementera din modellerings- eller datahanteringsprocess. Du kan basera modellen på alla elever som ingår i ett Python-paket i Azure Machine Learning-miljön.

Anteckning

Var extra uppmärksam på kommentarerna i exempelkoden för skriptet och se till att skriptet strikt följer kravet, inklusive klassnamn, metoder och metodsignatur. Överträdelse leder till undantag. Skapa Python-modell har endast stöd för att skapa en sklearnbaserad modell som ska tränas med hjälp av träningsmodellen.

Följande exempelkod för Naive Bayes-klassificeraren med två klasser använder det populära sklearn-paketet :


# 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. Anslut komponenten Create Python Model (Skapa Python-modell ) som du nyss skapade för att träna modell och poängsätta modell.

  2. Om du behöver utvärdera modellen lägger du till en Execute Python Script-komponent och redigerar Python-skriptet.

    Följande skript är exempel på utvärderingskod:

    
    
    # 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,
    
    

Nästa steg

Se den uppsättning komponenter som är tillgängliga för Azure Machine Learning.