Criar componente do Modelo Python

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

Saiba como utilizar o componente Criar Modelo python para criar um modelo não preparado a partir de um script python. Pode basear o modelo em qualquer formando incluído num pacote Python no ambiente de estruturador do Azure Machine Learning.

Depois de criar o modelo, pode utilizar o Modelo de Preparação para preparar o modelo num conjunto de dados, como qualquer outro formando no Azure Machine Learning. O modelo preparado pode ser transmitido para o Modelo de Classificação para fazer predições. Em seguida, pode guardar o modelo preparado e publicar o fluxo de trabalho de classificação como um serviço Web.

Aviso

Atualmente, não é possível ligar este componente ao componente Otimizar Hiperparâmetros do Modelo ou transmitir os resultados pontuados de um modelo Python para Avaliar Modelo. Se precisar de otimizar os hiperparâmetros ou avaliar um modelo, pode escrever um script Python personalizado com o componente Executar Script python .

Configurar o componente

A utilização deste componente requer conhecimentos intermédios ou especializados do Python. O componente suporta a utilização de qualquer formando incluído nos pacotes Python já instalados no Azure Machine Learning. Veja a lista de pacotes Python pré-instalada em Executar Script python.

Nota

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

Nota

Preste também atenção adicional à lista de componentes pré-instalados em Executar Script python. Importar apenas componentes pré-instalados. Não instale pacotes adicionais, como "pip install xgboost" neste script. Caso contrário, serão gerados erros ao ler modelos em componentes de fluxo inferior.

Este artigo mostra como utilizar Criar Modelo Python com um pipeline simples. Eis um diagrama do pipeline:

Diagrama de Criar Modelo Python

  1. Selecione Criar Modelo python e edite o script para implementar o seu processo de modelação ou gestão de dados. Pode basear o modelo em qualquer formando incluído num pacote Python no ambiente do Azure Machine Learning.

Nota

Preste atenção extra aos comentários no código de exemplo do script e certifique-se de que o script segue estritamente o requisito, incluindo o nome da classe, métodos e assinatura do método. A violação levará a exceções. A criação do Modelo Python só suporta a criação de um modelo baseado em sklearn para ser preparado com o Modelo de Preparação.

O seguinte código de exemplo do classificador naive Bayes de duas classes utiliza 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. Ligue o componente Criar Modelo python que acabou de criar para Preparar Modelo e Modelo de Classificação.

  2. Se precisar de avaliar o modelo, adicione um componente Executar Script python e edite o script python.

    O seguinte script é o 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,
    
    

Passos seguintes

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