Partilhar via


Criar componente Modelo Python

Este artigo descreve um componente no designer do Azure Machine Learning.

Saiba como usar o componente Create Python Model para criar um modelo não treinado a partir de um script Python. Você pode basear o modelo em qualquer aluno incluído em um pacote Python no ambiente de designer do Azure Machine Learning.

Depois de criar o modelo, você pode usar Train Model para treinar o modelo em um conjunto de dados, como qualquer outro aluno no Azure Machine Learning. O modelo treinado pode ser passado para o Modelo de Pontuação para fazer previsões. Em seguida, você pode salvar o modelo treinado e publicar o fluxo de trabalho de pontuação como um serviço Web.

Aviso

Atualmente, não é possível conectar esse componente ao componente Tune Model Hyperparameters ou passar os resultados pontuados de um modelo Python para Evaluate Model. Se você precisar ajustar os hiperparâmetros ou avaliar um modelo, poderá escrever um script Python personalizado usando o componente Executar Script Python .

Configurar o componente

O uso deste componente requer conhecimento intermediário ou especializado de Python. O componente dá suporte ao uso de qualquer aluno incluído nos pacotes Python já instalados no Azure Machine Learning. Consulte a lista de pacotes Python pré-instalados em Execute Python Script.

Nota

Tenha muito cuidado ao escrever seu script e certifique-se de que não há nenhum erro de sintaxe, como usar um objeto não declarado ou um componente não importado.

Nota

Também preste atenção extra à lista de componentes pré-instalados em Execute Python Script. Importe apenas componentes pré-instalados. Por favor, não instale pacotes extras como "pip install xgboost" neste script, caso contrário, erros serão gerados ao ler modelos em componentes downstream.

Este artigo mostra como usar Create Python Model com um pipeline simples. Aqui está um diagrama do pipeline:

Diagrama de Criar Modelo Python

  1. Selecione Criar modelo Python e edite o script para implementar seu processo de modelagem ou gerenciamento de dados. Você pode basear o modelo em qualquer aluno incluído em um pacote Python no ambiente do Azure Machine Learning.

Nota

Por favor, preste atenção extra aos comentários no código de exemplo do script e certifique-se de que seu script siga estritamente o requisito, incluindo o nome da classe, métodos, bem como assinatura do método. A violação levará a exceções. Create Python Model suporta apenas a criação de modelos baseados em sklearn para serem treinados usando Train Model.

O seguinte código de exemplo do classificador Naive Bayes de duas classes usa o popular pacote sklearn :


# 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. Conecte o componente Create Python Model que você acabou de criar a Train Model e Score Model.

  2. Se você precisar avaliar o modelo, adicione um componente Execute Python Script e edite o script Python.

    O script a seguir é um código de avaliação de exemplo:

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

Próximos passos

Consulte o conjunto de componentes disponíveis para o Azure Machine Learning.