Crear un componente R

Cómo crear un componente R personalizado para su uso en análisis.

Antes de crear un componente R, debe asegurarse de que cumple los siguientes requisitos:
  • La secuencia de comandos R está escrita en un formato de función R válido.
  • La secuencia de comandos R se ejecuta en la consola de GUI de R.
  • La secuencia de comandos R al menos tiene una función principal.
  • Instale los paquetes necesarios para ejecutar el script R en su equipo o en el servidor de SAP HANA.
  • La secuencia de comandos R escrito para el análisis en la base de datos devuelve un marco de datos.
Debe tener en cuenta los siguientes procedimientos recomendados al escribir la secuencia de comandos R:
  • La secuencia de comandos R escrito para el análisis en proceso devuelve un marco de datos.
  • Se recomienda la conversión de tipo, por ejemplo, si una columna tiene valores numéricos, indíquela como as.numeric(output)
  • Para variables de categoría utilizadas en la secuencia de comandos R, especifique la variable con el comando as.factor.
  1. En el espacio Predecir, en la lista de componentes de la derecha, seleccione Inicio de la ruta de navegación add_component.gif Siguiente paso de navegación Componente R Fin de la ruta de navegación
    Aparece un asistente Crear nuevo componente R personalizado.
  2. En la página General, introduzca la siguiente información:
    1. En el cuadro de texto Nombre de componente, escriba Mi componente.
    2. En la lista desplegable Tipo de componente, seleccione Algoritmo.
    3. En el cuadro de texto Descripción de componente, escriba Componente R para regresión lineal sencilla.
  3. Seleccione Siguiente.
    Aparecerá la página Comando.
  4. En la página Secuencia de comandos, seleccione Cargar secuencia de comandos para seleccionar un archivo a cargar.
    Nota Puede escribir o copiar y pegar el siguiente comando R de muestra en el cuadro de texto.
    Nota Consulte los comentarios en la siguiente función R para poder entender y escribir su propio comando R.
    #The following is a sample script for a simple linear regression component.
    #You must write the script in a valid R function format.
    #Note that the function name and variable name in R script can be user-defined, and are supported in R.
    #The following is the argument description for the primary function SLR:
    #InputDataFrame: Dataframe in R that contains the output of the parent component.
    #The following two parameters are received from the user through the property view:
    #IndependentColumn: Column name that you want to use as independent variable for the component.
    #DependentColumn; Column name that you want to use as a dependent variable for the component.
    
    SLR<-function(InputDataFrame, IndependentColumn, DependentColumn)
    {
      finalString<-paste(paste(DependentColumn,"~" ), IndependentColumn); 
    #Formatting the final string to
    #pass to "lm" function
    slr_model<-lm(finalString); # calling the "lm" function and storing the output model in "slr_model"
    #To get the predicted values for the Training data set, call the "predict" function with this model and
    #input dataframe, which is represented by "InputDataFrame".
    result<-predict(slr_model, InputDataFrame); # Storing the predicted values in the "result" variable.
    output<- cbind(InputDataFrame, result); # combining "InputDataFrame" and "result" to get the final table.
    plot(slr_model); #Plotting model visualization.
    #returnvalue: function must always return a list that contains results "out", and model variable
    #"slrmodel", if present.
    #The output variable stores the final result.
    #The model variable is used for model scoring.
    return (list(slrmodel=slr_model, out=output))
    }
    
    #The following is the argument description for the model scoring function "SLRModelScoring":
    #InputDataFrame: Dataframe in R that contains the output of the parent component.
    #IndependentColumn: Column name to be used as independent variables for the component.
    #Model: Model variable that is used for scoring.
    
    SLRModelScoring <- function (InputDataFrame, IndependentColumn, Model)
    {
    #Calling "predict" function to get the predictive value with "Model " and "InputDataFrame".
    predicted<-predict(Model, data.frame(InputDataFrame[,IndependentColumn]), level=0.95);
    # Combining “InputDataFrame” and “predicted” to get the final table.
    output <- cbind(InputDataFrame, predicted); 
    #returnvalue: function should always return a list that contains the result ("model result"),
    #The output variable stores the final result
    return(list(modelresult=output))
    }
    

    A continuación se ofrecen dos ejemplos para convertir un script R a un formato de función R válido, reconocidos por Expert Analytics:

    Secuencia de comandos R Formato de función R (reconocido por Expert Analytics)
     dataFrame<-read.csv("C:\\CSVs\\Iris.csv")
     attach(dataFrame)
     set.seed(4321)
     kmeans_model<-
     kmeans(data.frame(`SepalLength`,`SepalWidth`,
     `PetalLength`,`PetalWidth`),
     centers=5,iter.max=100,nstart=1,algorithm=
     "Hartigan-Wong")
     kmeans_model$cluster
    kmeansfunction<-function(dataFrame,independent,
     Clustersize,Iterations,algotype,numberofinitialdsets)
     { 
     set.seed(4321)
     kmeans_model<-kmeans(data.frame(dataFrame[,independent]),
     centers=Clustersize,iter.max=Iterations, nstart=numberofinitialdsets,
     algorithm= algotype)
     output<- cbind(dataFrame, kmeans_model$cluster);
     boxplot(output); return (list(out=output));
     }
    dataFrame<-
     read.csv("C:\\Datasets\\cnr\\Iris.csv") 
     attach(dataFrame) library(rpart)
     cnr_model<-rpart
     (Species~PetalLength+PetalWidth+SepalLength+
     SepalWidth, method="class") library(rpart) 
     predict(cnr_model, dataFrame,type = c("class"))
    cnrFunction<-function(dataFrame,IndependentColumns,dep)
     { 
     library(rpart); 
     formattedString<-paste(IndependentColumns, collapse = '+');
     finalString<-paste(paste(dep, "~" ),
     formattedString); cnr_model<-rpart(finalString, method="class");
     output<- predict(cnr_model, dataFrame,type=c("class")); 
     out<- cbind(dataFrame, output);
     return (list(result=out,modelcnr=cnr_model));
     } 
     cnrFunctionmodel<-function(dataFrame,ind,modelcnr,type)
     {
     output<-predict(modelcnr,data.frame(dataFrame[,ind]),type=type);
     out<- cbind(dataFrame, output); return (list(result=out));
    Nota

    Declare parámetros para la función de puntuación de modelo en la función primaria, excepto para Marco de datos de entrada y Nombre de la variable de modelo de entrada, que se seleccionan en listas deplegables.

  5. En la sección Detalles de la función principal, introduzca la siguiente información:
    1. En la lista desplegable Nombre de la función principal, seleccione SLR.
    2. Desde la lista desplegable Marco de datos de entrada, seleccione InputDataFrame.
    3. En el cuadro Marcos de entrada de salida, escriba out.
    4. Seleccione la casilla de verificación Opción para guardar el modelo.
      El campo Nombre de variable de modelo está habilitado y aparece Detalles de la función Definición de puntaje de modelo.
    5. En el campo Nombre de variable de modelo, escriba slrmodel.
    6. Seleccione las casillas de verificación Mostrar resumen y Opción para exportar como PMML.
  6. En la sección Detalles de la función Definición de puntaje de modelo, introduzca la siguiente información:
    1. Desde Nombre de función de puntaje modelo, seleccione SLRModelScoring.
    2. Desde la lista desplegable Marco de datos de entrada, seleccione MInputDataFrame.
    3. En el campo Marcos de entrada de salida, escriba modelresult.
    4. En la lista desplegable Nombre de la función principal modelo, seleccione Modelo.
  7. Seleccione Siguiente.
    Aparece la página Opciones.
  8. En la sección Definición de tabla de salida de Opciones de la función principal, lleve a cabo los siguientes subpasos:
    1. Seleccione No tener en cuenta ninguno.
    2. En la lista desplegable Tipo de datos, seleccione Entero.
    3. En el cuadro Nombre de nueva columna prevista, escriba Predicted column.
  9. En la sección Definición de la vista de propiedades, lleve a cabo los siguientes subpasos:
    1. En Nombre de visualización de propiedad, del cuadro Columna independiente, escriba Independent Column.
    2. En la lista desplegable Tipo de control, seleccione Selector de columnas (individual)como tipo de control para la Columna independiente.
    3. En Nombre de visualización de propiedad, del cuadro Columna independiente, escriba Dependent Column.
    4. En la lista desplegable Tipo de control, seleccione Selector de columnas (individual) como tipo de control paraColumna dependiente.
  10. En la sección Definiciones de tabla de salida de Opciones de puntaje de modelo, seleccione Considerar todas las columnas del componente anterior.
  11. En la lista desplegable Tipo de datos, seleccione Entero.
  12. En Nombre de nueva columna prevista, escriba Columna de salida.
  13. En la sección Definición de la vista de propiedades, lleve a cabo los siguientes subpasos:
    1. En Nombre de visualización de propiedad, escriba Independent column.
    2. En la lista desplegable Tipo de control, seleccione Selector de columnas (individual)como tipo de control para la Columna independiente.
  14. Seleccione Finalizar.
En función del tipo de análisis realizado, puede crear un modelo como para cualquier otro componente.