Создание компонента модели Python

В этой статье описывается компонент в конструкторе Машинного обучения Azure.

Узнайте, как использовать компонент создания модели Python для создания необученной модели из скрипта Python. Вы можете создать модель на основе любого учащегося, включенного в пакет Python в среде конструктора Машинного обучения Azure.

После создания модели вы можете использовать Модель обучения для обучения модели на наборе данных, как и любой другой учащийся в Машинном обучении Azure. Обученную модель можно передать в Модель оценки, чтобы делать прогнозы. Затем вы можете сохранить обученную модель и опубликовать рабочий процесс скоринга как веб-службу.

Предупреждение

В настоящее время невозможно подключить этот компонент к модулю Настройки гиперпараметров модели или передать результаты оценки модели Python в Анализ модели. Если вам нужно настроить гиперпараметры или оценить модель, вы можете написать собственный сценарий Python с помощью компонента Выполнение сценария Python.

Настройка компонента

Использование этого компонента требует среднего или экспертного знания Python. Компонент поддерживает использование любого учащегося, включенного в пакеты Python, уже установленные в Машинное обучение Azure. См. список предустановленных пакетов Python в разделе Выполнение сценария Python.

Примечание

Будьте очень осторожны при написании сценария и убедитесь, что нет синтаксических ошибок, таких как использование необъявленного объекта или неимпортированного компонента.

Примечание

Также обратите особое внимание на список предустановленных компонентов в Выполнение сценария Python. Импортируйте только предварительно установленные компоненты. Пожалуйста, не устанавливайте в этот скрипт дополнительные пакеты, такие как "pip install xgboost", иначе будут возникать ошибки при чтении моделей в последующих компонентах.

В этой статье показано, как использовать Создание модели Python с простым конвейером. Вот схема конвейера:

Схема создания Модели Python

  1. Выберите Создать модель Python и отредактируйте сценарий, чтобы реализовать процесс моделирования или управления данными. Вы можете основывать модель на любом учащемся, включенном в пакет Python в среде машинного обучения Azure.

Примечание

Обратите особое внимание на комментарии в образце кода сценария и убедитесь, что ваш сценарий строго соответствует требованиям, включая имя класса, методы, а также подпись метода. Нарушение приведет к исключениям. Создание модели Python поддерживает только создание модели на основе sklearn путем обучения с помощью модели обучения.

В следующем примере кода наивного байесовского классификатора с двумя классами используется популярный пакет 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. Подключите только что созданный компонент Создания модели Python для Модели обучения и Модели оценки.

  2. Если вам нужно оценить модель, добавьте компонент Выполнить скрипт Python и отредактируйте скрипт Python.

    Следующий сценарий представляет собой пример кода оценки:

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

Дальнейшие действия

Ознакомьтесь с набором доступных компонентов для Машинного обучения Azure.