Criar Modelo R
Importante
O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.
A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).
- Consulte informações sobre projetos de machine learning em movimento de ML Studio (clássico) para Azure Machine Learning.
- Saiba mais sobre Azure Machine Learning.
A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.
Cria um modelo R usando recursos personalizados
Categoria: Transformação de Dados / Manipulação
Nota
Aplica-se a: Machine Learning Studio (clássico) apenas
Módulos semelhantes de arrasto e queda estão disponíveis em Azure Machine Learning designer.
Visão geral do módulo
Este artigo descreve como usar o módulo Create R Model em Machine Learning Studio (clássico), para criar um modelo destreinado a partir de um script R.
Pode basear o modelo em qualquer aluno incluído num pacote R no ambiente Machine Learning.
Depois de criar o modelo, pode utilizar o Train Model para treinar o modelo num conjunto de dados, como qualquer outro aluno em Machine Learning. O modelo treinado pode ser passado para o Score Model para usar o modelo para fazer previsões. O modelo treinado pode então ser guardado, e o fluxo de trabalho de pontuação pode ser publicado como um serviço web.
Aviso
Atualmente não é possível passar os resultados pontuados de um modelo R para avaliar modelo ou modelo de validação cruzada. Se precisar de avaliar um modelo, pode escrever um script R personalizado e executá-lo utilizando o módulo Execut R Script .
Além de utilizar o Modelo Create R para guardar e reutilizar módulos R personalizados, pode criar a sua própria implementação de um processo de modelação e gestão de dados utilizando R, fazer o upload dos ficheiros em formato zipped para o seu espaço de trabalho e, em seguida, registar o pacote como um módulo personalizado. Para mais informações, consulte os Módulos R Personalizados.
Como configurar criar modelo R
A utilização deste módulo requer conhecimento intermédio ou especializado de R. O módulo suporta a utilização de qualquer aluno que esteja incluído nos pacotes R já instalados em Machine Learning.
Esta amostra da Galeria Azure AI implementa um classificador Naïve Bayes de duas classes utilizando o pacote popular e1070
: + Criar Modelo R. Recomendamos que copie o exemplo para o seu espaço de trabalho e acompanhe.o mais.
Adicione estes módulos à sua experiência: Criar Modelo R, Modelo de Comboio, Modelo de Pontuação.
No painel de propriedades do Modelo Criar R, forneça estes scripts:
Guião R do treinador: O script R que fornece aqui é usado para treinar o modelo. Quando executam a experiência, é implantado no módulo Modelo de Comboio .
Scorer R script: O script R que fornece nesta entrada é apenas para pontuar. quando executam a experiência, é implantado no módulo 'Modelo de Pontuação '.
A experiência da amostra também inclui o módulo Execut Python Script , que é usado para traçar gráficos para avaliação de modelos. Este módulo é opcional ao publicar para um serviço web, mas útil ao desenvolver a experiência.
- Para ver as tabelas a partir do script Python, clique à direita no módulo Python, selecione Python Device e selecione Visualize.
- Para ver apenas as métricas do modelo, clique com o botão direito no módulo Python, selecione Python Dataset e selecione Visualize.
Para obter o código no módulo Python opcional, consulte o módulo Python para avaliação do modelo.
Roteiro de treino
O exemplo a seguir demonstra o tipo de código que pode utilizar no script Do Treinador R.
Este script carrega um pacote R, cria um modelo utilizando um aprendiz a partir do pacote, e configura as colunas de funcionalidades e etiquetas utilizando as constantes e funções pré-indefinidas fornecidas no Create R Model.
library(e1071)
features <- get.feature.columns(dataset)
labels <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
A primeira linha carrega o pacote R, e1071, que contém o algoritmo de classificação Naïve Bayes que queremos usar. Uma vez que este é um dos pacotes pré-instalados no ambiente Machine Learning, não precisa de descarregar ou instalar o pacote.
As próximas linhas obtêm as colunas de funcionalidades e a coluna de etiquetas do conjunto de dados, e combinam-nas num novo quadro de dados R que é nomeado
train.data
:features <- get.feature.columns(dataset) labels <- as.factor(get.label.column(dataset)) train.data <- data.frame(features, labels) feature.names <- get.feature.column.names(dataset)
Utilização de notas destas funções predefinidas:
get.label.columns()
retorna a coluna selecionada como a etiqueta de classe no módulo Modelo de Comboio .get.feature.columns()
seleciona as colunas que foram designadas como funcionalidades no conjunto de dados.Por predefinição, todas as colunas exceto a coluna do rótulo são consideradas funcionalidades no Studio (clássico). Portanto, para marcar colunas específicas como funcionalidades, utilize Metadados editar ou selecione um conjunto de colunas dentro do script R.
get.feature.column.names(dataset)
obtém nomes de colunas de recurso do conjunto de dados.
Os nomes do conjunto de dados combinado são designados como nomes para colunas em
train.data
, e um nomeClass
temporário é criado para a coluna do rótulo.names(train.data) <- c(feature.names, "Class")
A linha final do código define o algoritmo classificador Naïve Bayes em função das variáveis (características) e resultados (etiquetas) no quadro de
train.data
dados.model <- naiveBayes(Class ~ ., train.data)
Ao longo da criação, formação e marcação de scripts de modelos, deve utilizar o nome
model
variável.
Roteiro de pontuação
O código que se segue ilustra o tipo de código R que forneceria no script Scorer R.
library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
A primeira linha carrega o pacote.
A segunda linha calcula as probabilidades previstas para o conjunto de dados de pontuação utilizando o modelo treinado a partir do script de treino, designado pelo nome variável exigido,
model
.A terceira linha aplica um limiar de 0,5 para as probabilidades ao atribuir as etiquetas de classe previstas.
A linha final combina as etiquetas de classe e as probabilidades no quadro de dados de saída,
scores
.O quadro de dados que é passado para o módulo 'Modelo de Pontuação ' deve ter o nome
scores
.
Script de avaliação opcional python
A experiência da amostra na Galeria Azure AI inclui o seguinte script Python, que é usado para gerar métricas e gráficos para avaliação de modelos.
def azureml_main(dataframe):
import matplotlib
matplotlib.use("agg")
from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
ytrue = scores["Class"]
ypred = np.array([float(val) for val in scores["classes"]])
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]
# Plot ROC Curve
fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
fig = plt.figure()
axis = fig.gca()
axis.plot(fpr, tpr, linewidth=8)
axis.grid("on")
axis.set_xlabel("False positive rate")
axis.set_ylabel("True positive rate")
axis.set_title("ROC Curve")
fig.savefig("roc.png")
return metrics,
Publique o fluxo de trabalho personalizado do modelo R como um serviço web
Depois de executar a experiência, pode publicar a experiência completa como um serviço web.
Para obter instruções atualizadas sobre como criar um serviço web a partir de uma experiência studio (clássica), consulte Walkthrough Step 5: Implementar o serviço web Machine Learning
Por predefinição, o serviço web espera que todas as colunas de entrada dos dados de treino sejam fornecidas, incluindo a coluna do rótulo. Pode adicionar uma instância de Colunas Selecionadas no Conjunto de Dados entre a fonte de dados de entrada e o módulo 'Modelo de Pontuação' para excluir a etiqueta que está a tentar prever.
Notas técnicas
O módulo Create R Model suporta a utilização apenas de CRAN R. Não é possível selecionar outra versão de R, nem utilizar o Microsoft R Open.
O modelo é em cache após a primeira execução do módulo e o módulo não é invocado em execuções posteriores até que quaisquer alterações nos scripts de entrada sejam feitas. Por favor, tenha em consideração este comportamento se os seus scripts R utilizarem qualquer um dos seguintes:
- Funções que geram números aleatórios
- Funções que geram números aleatórios
- Outras funções não determinísticas
Os modelos R personalizados criados com este módulo não podem ser utilizados com estes módulos:
Os modelos R não executam automaticamente a normalização da funcionalidade de dados categóricos ou manuseiam valores em falta. O manuseamento de tais variáveis deve ser feito dentro dos scripts de treino e pontuação R.
Tabela de funções pré-definidas
Utilização | Description |
---|---|
get.feature.columns(dataset) |
Recebe todas as colunas de recurso. |
get.label.column(dataset, label.type=TrueLabelType) |
Obtém a coluna de etiquetas, dado o tipo. Consulte a secção Constants para obter uma lista dos tipos disponíveis. |
get.label.column.names(dataset) |
Obtém os nomes de todas as colunas de etiquetas. |
get.label.column.name(dataset, label.type=TrueLabelType) |
Obtém o nome da coluna da etiqueta, dado o tipo. Consulte a secção Constants para obter uma lista dos tipos disponíveis. |
get.label.column.types(dataset) |
Obtém os tipos de todas as colunas de etiquetas. |
get.feature.column.names(dataset) |
Obtém os nomes de todas as colunas de recurso. |
dataset < - set.score.column(dataset, score.type, column.name) |
Define a coluna de pontuação, dado um tipo. Consulte a secção Constants para obter uma lista dos tipos disponíveis. |
dataset < - set.feature.channel(dataset, channel.name, column.names) |
Define o canal de recurso, dado um nome. Consulte a secção Constants para obter uma lista dos nomes disponíveis. |
Tabela de constantes pré-definidas
Constante | Description |
---|---|
TrueLabelType | Tipo de coluna de rótulo verdadeiro |
MarcaçãoLabelType | Tipo de coluna de etiqueta pontuada |
RawScoreType | Tipo de coluna de pontuação bruta |
CalibradoScoreType | Tipo de coluna de pontuação calibrada |
PontuaçãoProbabilitiesMulticlassColumnTypePattern | O padrão para preparar o tipo de coluna de probabilidades pontuada para classificador multiclasse |
BayesianLinearRegressionScoresFeatureChannel | O nome do canal de recurso com pontuações lineares de regressão bayesiana |
BinaryClassificationScoresFeatureChannel | O nome do canal de recurso com pontuações de classificação binária |
MulticlassclassClassificationScoresFeatureChannel | O nome do canal de recurso com pontuações de classificação multiclasse |
OrdinalRegressionScoresFeatureChannel | O nome do canal de recurso com pontuações de regressão ordinal |
RegressãoScoresFeatureChannel | O nome do canal de recurso com pontuações de regressão |
Exemplos
Para obter exemplos adicionais de como utilizar este módulo em experiências de machine learning, consulte a Galeria Azure AI.
Entradas esperadas
Nome | Tipo | Description |
---|---|---|
Guião R do treinador | Script | Um script R que toma um conjunto de dados como entrada e produz um modelo destreinado. |
Guião R do marcador | Script | Um script R que toma um modelo e um conjunto de dados como entrada e outputs as pontuações especificadas no script. |
Saídas
Nome | Tipo | Description |
---|---|---|
Modelação | Interface ILearner | Um modelo destreinado |