Crear modelo R
Crea un modelo de R con recursos personalizados
Categoría: transformación y manipulación de datos
Nota
Se aplica a: machine learning Studio (clásico)
Este contenido solo pertenece a Studio (clásico). Se han agregado módulos similares de arrastrar y colocar al diseñador de Azure Machine Learning. Obtenga más información en este artículo comparativa de las dos versiones.
Información general sobre el módulo
En este artículo se describe cómo usar el módulo crear modelo de r en Azure machine learning Studio (clásico) para crear un modelo no entrenado a partir de un script de R.
Puede basar el modelo en cualquier aprendiz que esté incluido en un paquete de R en el entorno de Azure Machine Learning.
Después de crear el modelo, puede usar Train model (Entrenar modelo) para entrenar el modelo en un conjunto de datos, al igual que cualquier otro aprendiz en Azure Machine Learning. El modelo entrenado puede pasarse a Score Model (Puntuación del modelo) para usar el modelo para hacer predicciones. Luego, se puede guardar el modelo entrenado y se puede publicar el flujo de trabajo de puntuación como servicio web.
Advertencia
Actualmente no es posible pasar los resultados puntuados de un modelo de R para evaluar el modelo o el modelo de validación cruzada. Si necesita evaluar un modelo, puede escribir un script de R personalizado y ejecutarlo mediante el módulo Ejecutar script de r .
Además de usar el modelo Create r para guardar y volver a usar módulos de r personalizados, puede crear su propia implementación de un proceso de administración de datos y modelado mediante R, cargar los archivos en formato comprimido en el área de trabajo y, a continuación, registrar el paquete como un módulo personalizado. Para obtener más información, consulte módulos R personalizados.
Cómo configurar Create R Model
El uso de este módulo requiere un conocimiento intermedio o experto de R. El módulo admite el uso de cualquier aprendiz incluido en los paquetes de R ya instalados en Azure Machine Learning.
Este ejemplo del Azure AI Gallery implementa un clasificador Bayes Naive de dos clases mediante el conocido e1070
paquete: + crear modelo R. Se recomienda copiar el ejemplo en el área de trabajo y seguir el tutorial.
Agregue estos módulos al experimento: crear modelo R, entrenar modeloy puntuar modelo.
En el panel propiedades de crear modelo R, proporcione estos scripts:
Script de r del instructor: el script de r que se proporciona aquí se usa para entrenar el modelo. Al ejecutar el experimento, se implementa en el módulo Train Model (entrenar modelo ).
Script r del puntuador: el script de r que se proporciona en esta entrada solo es para la puntuación. al ejecutar el experimento, se implementa en el módulo score Model (puntuar modelo ).
El experimento de ejemplo también incluye el módulo Ejecutar script de Python , que se usa para trazar gráficos para la evaluación de modelos. Este módulo es opcional al publicar en un servicio Web, pero resulta útil al desarrollar el experimento.
- Para ver los gráficos del script de Python, haga clic con el botón derecho en el módulo de Python, seleccione el dispositivo Python y seleccione visualizar.
- Para ver solo las métricas del modelo, haga clic con el botón derecho en el módulo de Python, seleccione conjunto de información de Python y seleccione visualizar.
Para el código del módulo opcional de Python, vea módulo de Python para la evaluación de modelos.
Script de entrenamiento
En el ejemplo siguiente se muestra el tipo de código que puede usar en el script de R del instructor.
Este script carga un paquete de R, crea un modelo mediante un aprendiz del paquete y configura las columnas de característica y etiqueta mediante las constantes y funciones predefinidas proporcionadas en crear modelo de R.
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)
La primera línea carga el paquete R, e1071, que contiene el algoritmo clasificador Bayes naive que deseamos utilizar. Puesto que es uno de los paquetes previamente instalados en el entorno de Azure Machine Learning, no es necesario descargarlo o instalarlo.
Las líneas siguientes obtienen las columnas de características y la columna de etiqueta del conjunto de datos, y las combina en una nueva trama de datos de R denominada
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)
Tenga en cuenta el uso de estas funciones predefinidas:
get.label.columns()
Devuelve la columna seleccionada como etiqueta de clase en el módulo entrenar modelo .get.feature.columns()
Selecciona las columnas que se designaron como características en el conjunto de elementos.De forma predeterminada, todas las columnas, excepto la columna de etiqueta, se consideran características en Studio (clásico). Por lo tanto, para marcar columnas específicas como características, use editar metadatoso seleccione un conjunto de columnas en el script de R.
get.feature.column.names(dataset)
Obtiene los nombres de las columnas de características del conjunto de DataSet.
Los nombres del conjunto de DataSet combinado se designan como los nombres de las columnas de
train.data
y se crea un nombre temporalClass
para la columna de etiqueta.names(train.data) <- c(feature.names, "Class")
La última línea del código define el algoritmo clasificador Bayes Naive como una función de las variables (características) y los resultados (etiquetas) en la
train.data
trama de datos.model <- naiveBayes(Class ~ ., train.data)
A lo largo de los scripts de creación, entrenamiento y puntuación del modelo, debe usar el nombre de la variable
model
.
Script de puntuación
En el código siguiente se muestra el tipo de código R que se proporcionaría en el script puntuador r.
library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
La primera línea carga el paquete.
La segunda línea calcula las probabilidades de predicción para el conjunto de resultados de puntuación mediante el modelo entrenado del script de entrenamiento, designado por el nombre de variable requerido,
model
.La tercera línea aplica un umbral de 0,5 a las probabilidades al asignar las etiquetas de clase de predicción.
La última línea combina las etiquetas de clase y las probabilidades en la trama de datos de salida,
scores
.La trama de datos que se pasa al módulo score Model (puntuar modelo ) debe tener el nombre
scores
.
Script de evaluación de Python opcional
El experimento de ejemplo en el Azure AI Gallery incluye el siguiente script de Python, que se usa para generar métricas y gráficos para la evaluación 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,
Publicar el flujo de trabajo del modelo de R personalizado como un servicio Web
Después de ejecutar el experimento, puede publicar el experimento completo como un servicio Web.
Para obtener instrucciones actualizadas sobre cómo crear un servicio web desde un experimento de Studio (clásico), vea el paso 5 del tutorial: implementar el servicio web Azure machine learning
De forma predeterminada, el servicio web espera que se proporcionen todas las columnas de entrada de los datos de entrenamiento, incluida la columna de etiqueta. Puede Agregar una instancia de seleccionar columnas en el conjunto de datos entre el origen de datos de entrada y el módulo puntuar modelo para excluir la etiqueta que está intentando predecir.
Notas técnicas
El módulo Create r Model solo admite el uso de Cran r. No se puede seleccionar otra versión de R ni usar Microsoft R Open.
El modelo se almacena en caché después de su primera ejecución y no se invoca en ejecuciones posteriores hasta que se realizan cambios en los scripts de entrada. Conviene tener en cuenta este comportamiento si los scripts R usan lo siguiente:
- Funciones que generan números aleatorios
- Funciones que generan números aleatorios
- Otras funciones no deterministas
Los modelos de R personalizados creados con este módulo no se pueden usar con estos módulos:
- Tune Model Hyperparameters (Optimizar hiperparámetros del modelo)
- Modelo de validación cruzada
- Uno frente a todos multiclase
- Regresión ordinal
Los modelos R no realizan automáticamente la normalización de características de datos de categorías ni controlan los valores que faltan. El control de tales variables debe realizarse en los scripts R de entrenamiento y de puntuación.
Tabla de funciones predefinidas
Uso | Descripción |
---|---|
get.feature.columns(dataset) |
Obtiene todas las columnas de característica. |
get.label.column(dataset, label.type=TrueLabelType) |
Obtiene la columna de etiqueta de un tipo determinado. Consulte la sección Constantes para obtener una lista de los tipos disponibles. |
get.label.column.names(dataset) |
Obtiene los nombres de todas las columnas de etiqueta. |
get.label.column.name(dataset, label.type=TrueLabelType) |
Obtiene el nombre de la columna de etiqueta de un tipo determinado. Consulte la sección Constantes para obtener una lista de los tipos disponibles. |
get.label.column.types(dataset) |
Obtiene los tipos de todas las columnas de etiqueta. |
get.feature.column.names(dataset) |
Obtiene los nombres de todas las columnas de característica. |
dataset < - set.score.column(dataset, score.type, column.name) |
Establece la columna de puntuación de un tipo determinado. Consulte la sección Constantes para obtener una lista de los tipos disponibles. |
dataset < - set.feature.channel(dataset, channel.name, column.names) |
Establece el canal de característica de un nombre determinado. Consulte la sección Constantes para obtener una lista de los nombres disponibles. |
Tabla de constantes predefinidas
Constante | Descripción |
---|---|
TrueLabelType | Tipo de columna de etiqueta true |
ScoredLabelType | Tipo de columna de etiqueta puntuada |
RawScoreType | Tipo de columna de puntuación sin formato |
CalibratedScoreType | Tipo de columna de puntuación calibrada |
ScoredProbabilitiesMulticlassColumnTypePattern | Patrón para preparar el tipo de columna de probabilidades puntuadas para el clasificador multiclase |
BayesianLinearRegressionScoresFeatureChannel | Nombre del canal de característica con puntuaciones de regresión lineal bayesiana |
BinaryClassificationScoresFeatureChannel | Nombre del canal de característica con puntuaciones de clasificación binaria |
MulticlassClassificationScoresFeatureChannel | Nombre del canal de característica con puntuaciones de clasificación multiclase |
OrdinalRegressionScoresFeatureChannel | Nombre del canal de característica con puntuaciones de regresión ordinal |
RegressionScoresFeatureChannel | Nombre del canal de característica con puntuaciones de regresión |
Ejemplos
Para obtener más ejemplos de cómo usar este módulo en experimentos de aprendizaje automático, vea la Azure AI Gallery.
Entradas esperadas
Nombre | Tipo | Descripción |
---|---|---|
Script R de entrenamiento | Script | Script R que toma como entrada un conjunto de datos y genera un modelo no entrenado. |
Script R de puntuación | Script | Script R que toma como entrada un modelo y un conjunto de datos y genera las puntuaciones especificadas en el script. |
Salidas
Nombre | Tipo | Descripción |
---|---|---|
Modelo | Interfaz ILearner | Modelo no entrenado. |