Vytvoření komponenty modelu Pythonu

Tento článek popisuje komponentu v návrháři služby Azure Machine Learning.

Naučte se používat komponentu Vytvořit model Pythonu k vytvoření netrénovaného modelu ze skriptu Pythonu. Model můžete založit na libovolném žákovi, který je součástí balíčku Pythonu v prostředí návrháře Služby Azure Machine Learning.

Po vytvoření modelu můžete použít trénování modelu k trénování modelu na datové sadě, stejně jako jakýkoli jiný studijní program ve službě Azure Machine Learning. Natrénovaný model se dá předat do funkce Score Model a provádět predikce. Natrénovaný model pak můžete uložit a pracovní postup hodnocení publikovat jako webovou službu.

Upozornění

V současné době není možné připojit tuto komponentu ke komponentě Tune Model Hyperparameters ani předat vyhodnocené výsledky modelu Pythonu do vyhodnocení modelu. Pokud potřebujete vyladit hyperparametry nebo vyhodnotit model, můžete napsat vlastní skript Pythonu pomocí komponenty Spustit skript Pythonu .

Konfigurace komponenty

Použití této komponenty vyžaduje středně pokročilé nebo odborné znalosti Pythonu. Komponenta podporuje použití libovolného uživatele, který je součástí balíčků Pythonu, které jsou už nainstalované ve službě Azure Machine Learning. Seznam předinstalovaných balíčků Pythonu najdete v tématu Spuštění skriptu Pythonu.

Poznámka

Při psaní skriptu buďte velmi opatrní a ujistěte se, že nedochází k žádné chybě syntaxe, jako je použití ne deklarovaného objektu nebo neimportované komponenty.

Poznámka

Věnujte také zvýšenou pozornost seznamu předinstalovaných komponent v tématu Spuštění skriptu Pythonu. Importujte jenom předinstalované komponenty. V tomto skriptu neinstalujte další balíčky, například pip install xgboost, jinak při čtení modelů v komponentách down-streamu dojde k chybám.

Tento článek ukazuje, jak používat vytvoření modelu Pythonu s jednoduchým kanálem. Tady je diagram kanálu:

Diagram vytvoření modelu Pythonu

  1. Vyberte Vytvořit model Pythonu a upravte skript pro implementaci procesu modelování nebo správy dat. Model můžete založit na libovolném žákovi, který je součástí balíčku Pythonu v prostředí Azure Machine Learning.

Poznámka

Věnujte prosím zvláštní pozornost komentářům v ukázkovém kódu skriptu a ujistěte se, že váš skript striktně dodržuje požadavek, včetně názvu třídy, metod a podpisu metody. Porušení povede k výjimkám. Vytvoření modelu v Pythonu podporuje pouze vytváření modelu založeného na sklearnu, který se bude trénovat pomocí trénování modelu.

Následující ukázkový kód klasifikátoru Naive Bayes se dvěma třídami používá oblíbený balíček 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. Připojte právě vytvořenou komponentu Create Python Model k trénování modelu a skóre modelu.

  2. Pokud potřebujete model vyhodnotit, přidejte komponentu Execute Python Script a upravte skript Pythonu.

    Následující skript je ukázkový zkušební kód:

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

Další kroky

Projděte si sadu komponent dostupných pro Azure Machine Learning.