Создание компонента модели Python
В этой статье описывается компонент в конструкторе Машинного обучения Azure.
Узнайте, как использовать компонент создания модели Python для создания необученной модели из скрипта Python. Вы можете создать модель на основе любого учащегося, включенного в пакет Python в среде конструктора Машинного обучения Azure.
После создания модели вы можете использовать Модель обучения для обучения модели на наборе данных, как и любой другой учащийся в Машинном обучении Azure. Обученную модель можно передать в Модель оценки, чтобы делать прогнозы. Затем вы можете сохранить обученную модель и опубликовать рабочий процесс скоринга как веб-службу.
Предупреждение
В настоящее время невозможно подключить этот компонент к модулю Настройки гиперпараметров модели или передать результаты оценки модели Python в Анализ модели. Если вам нужно настроить гиперпараметры или оценить модель, вы можете написать собственный сценарий Python с помощью компонента Выполнение сценария Python.
Настройка компонента
Использование этого компонента требует среднего или экспертного знания Python. Компонент поддерживает использование любого учащегося, включенного в пакеты Python, уже установленные в Машинное обучение Azure. См. список предустановленных пакетов Python в разделе Выполнение сценария Python.
Примечание
Будьте очень осторожны при написании сценария и убедитесь, что нет синтаксических ошибок, таких как использование необъявленного объекта или неимпортированного компонента.
Примечание
Также обратите особое внимание на список предустановленных компонентов в Выполнение сценария Python. Импортируйте только предварительно установленные компоненты. Пожалуйста, не устанавливайте в этот скрипт дополнительные пакеты, такие как "pip install xgboost", иначе будут возникать ошибки при чтении моделей в последующих компонентах.
В этой статье показано, как использовать Создание модели Python с простым конвейером. Вот схема конвейера:
- Выберите Создать модель 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]}
)
Подключите только что созданный компонент Создания модели Python для Модели обучения и Модели оценки.
Если вам нужно оценить модель, добавьте компонент Выполнить скрипт 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.