Criar módulo de modelo Python

Este artigo descreve um módulo no designer do Azure Machine Learning.

Saiba como usar o módulo Criar Modelo python para criar um modelo não treinado de um script Python. Você pode basear o modelo em qualquer aluno incluído em um pacote python no ambiente Azure Machine Learning designer.

Após criar o modelo, use o Modelo de Treinamento para treinar o modelo em um conjunto de dados, como qualquer outro aprendiz no Machine Learning do Azure. O modelo treinado pode ser passado para Modelo de pontuação, para usar o modelo 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 este módulo ao módulo Ajustar Hiperparâmetros de Modelo ou passar os resultados pontuados de um modelo python para Avaliar Modelo. Se você precisar ajustar os hiperparâmetros ou avaliar um modelo, poderá escrever um script Python personalizado usando o módulo Executar Script Python.

Configurar o módulo

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

Observação

Tenha muito cuidado ao escrever seu script e verifique se não há nenhum erro de sintaxe, como usar um objeto não declarado ou um módulo não importado.

Observação

Além disso, preste atenção extra à lista de módulos pré-instalados em Executar Script Python. Importe apenas módulos pré-instalados. Não instale pacotes extras, como "pip install xgboost" neste script, caso contrário, erros serão gerados durante a leitura de modelos em módulos de fluxo down.

Este artigo mostra como usar Criar Modelo python com um pipeline simples. Aqui está o diagrama do pipeline:

Diagrama de criação de modelo do 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 que esteja incluído em um pacote Python no ambiente do Azure Machine Learning.

Observação

Preste atenção extra aos comentários no código de exemplo do script e verifique se o script segue estritamente o requisito, incluindo o nome da classe, os métodos, bem como a assinatura do método. A violação levará a exceções. Criar modelo Python é compatível apenas com a criação de modelo baseado no sklearn para ser treinado com Treinar modelo.

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 AzureMLModel.
# 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 modules.

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 módulo criar modelo do Python que você acabou de criar para treinar o modelo e o modelo de Pontuação.

  2. Se você precisar avaliar o modelo, adicione um módulo Executar script Python 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 module.
    
    # 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óximas etapas

Confira o conjunto de módulos disponíveis no Azure Machine Learning.