Tworzenie składnika modelu języka Python

W tym artykule opisano składnik w projektancie usługi Azure Machine Learning.

Dowiedz się, jak utworzyć nietrenowany model za pomocą składnika Create Python Model (Tworzenie modelu języka Python) na podstawie skryptu języka Python. Model można oprzeć na każdym uczniu, który jest uwzględniony w pakiecie języka Python w środowisku projektanta usługi Azure Machine Learning.

Po utworzeniu modelu możesz użyć metody Train Model (Trenowanie modelu) do wytrenowania modelu w zestawie danych, tak jak w przypadku innych osób uczących się w usłudze Azure Machine Learning. Wytrenowany model można przekazać do klasy Score Model (Generowanie wyników dla modelu ) w celu przewidywania. Następnie możesz zapisać wytrenowany model i opublikować przepływ pracy oceniania jako usługę internetową.

Ostrzeżenie

Obecnie nie można połączyć tego składnika ze składnikiem Tune Model Hiperparameters ani przekazać wyników oceny modelu języka Python do funkcji Evaluate Model. Jeśli chcesz dostroić hiperparametry lub ocenić model, możesz napisać niestandardowy skrypt języka Python przy użyciu składnika Wykonaj skrypt języka Python .

Konfigurowanie składnika

Użycie tego składnika wymaga pośredniej lub specjalistycznej wiedzy na temat języka Python. Składnik obsługuje korzystanie z dowolnego ucznia zawartego w pakietach języka Python już zainstalowanych w usłudze Azure Machine Learning. Zobacz listę wstępnie zainstalowanych pakietów języka Python w temacie Wykonywanie skryptu języka Python.

Uwaga

Podczas pisania skryptu należy zachować ostrożność i upewnić się, że nie ma błędu składniowego, takiego jak użycie niezdeklarowanego obiektu lub nieimportowanego składnika.

Uwaga

Należy również zwrócić szczególną uwagę na listę wstępnie zainstalowanych składników w temacie Wykonywanie skryptu języka Python. Importuj tylko wstępnie zainstalowane składniki. Nie instaluj dodatkowych pakietów, takich jak "pip install xgboost" w tym skrypcie, w przeciwnym razie błędy będą zgłaszane podczas odczytywania modeli w składnikach strumienia w dół.

W tym artykule pokazano, jak używać polecenia Create Python Model with a simple pipeline ( Tworzenie modelu języka Python przy użyciu prostego potoku). Oto diagram potoku:

Diagram przedstawiający tworzenie modelu w języku Python

  1. Wybierz pozycję Utwórz model języka Python i edytuj skrypt, aby zaimplementować proces modelowania lub zarządzania danymi. Model można oprzeć na każdym uczniu, który jest uwzględniony w pakiecie języka Python w środowisku usługi Azure Machine Learning.

Uwaga

Zwróć szczególną uwagę na komentarze w przykładowym kodzie skryptu i upewnij się, że skrypt ściśle spełnia wymagania, w tym nazwę klasy, metody, a także podpis metody. Naruszenie doprowadzi do wyjątków. Tworzenie modelu języka Python obsługuje tylko tworzenie modelu opartego na technologii sklearn do trenowania przy użyciu trenowania modelu.

Poniższy przykładowy kod klasyfikatora dwuklasowego prostego algorytmu Bayesa używa popularnego pakietu 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. Połącz właśnie utworzony składnik Create Python Model (Tworzenie modelu języka Python) w celu trenowania modelu i generowania wyników dla modelu.

  2. Jeśli musisz ocenić model, dodaj składnik Execute Python Script (Wykonywanie skryptu języka Python ) i edytuj skrypt języka Python.

    Poniższy skrypt to przykładowy kod oceny:

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

Następne kroki

Zobacz zestaw składników dostępnych dla usługi Azure Machine Learning.