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

Создание пользовательского компонента R для использования при анализе.

Перед созданием компонента R убедитесь, что соблюдены следующие требования:
  • Скрипт R написан в правильном формате функций среды R.
  • Скрипт R выполняется в консоли R GUI.
  • Скрипт R имеет хотя бы одну основную функцию.
  • Пакеты, требуемые для выполнения скрипта R, должны быть установлены на локальном компьютере или на сервере SAP HANA.
  • Скрипт R, написанный для анализа в базе данных, возвращает фрейм данных.
Ниже представлены рекомендации по написанию скрипта R:
  • Скрипт R, написанный для анализа в области обработки, возвращает фрейм данных.
  • Рекомендуется преобразование типов выходных данных: например, если столбец содержит численные значения, укажите его как as.numeric(output)
  • Категориальные переменные, которые используются в скрипте R, укажите с помощью команды as.factor.
  1. На вкладке Прогноз в списке компонентов выберите Начальная точка навигации add_component.gif Следующий шаг навигации Компонент R Конечная точка навигации.
    Откроется мастер создания пользовательского компонента R.
  2. На странице Общие введите следующую информацию:
    1. В текстовом поле Имя компонента введите Мой компонент.
    2. В списке Тип компонента выберите Алгоритмы.
    3. В текстовом поле Описание компонента введите Компонент R для алгоритма простой линейной регрессии.
  3. Нажмите кнопку Далее.
    Отобразится страница Скрипт.
  4. На странице Скрипт выберите Загрузить скрипт для выбора и загрузки файла.
    Примечание Введите или скопируйте в текстовое поле следующий скрипт R.
    Примечание См. комментарии к следующему формату функций R для лучшего понимания и написания собственного скрипта 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))
    }
    

    Далее приведены два примера преобразования скрипта R в действительный формат функций R, распознаваемый приложением Expert Analytics.

    Скрипт R Формат функции R (распознаваемый 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));
    Примечание

    Для выполнения функции оценки модели объявите все параметры в основной функции, кроме параметров "Фрейм входных данных" и "Имя входной переменной модели" (выбираются из раскрывающихся списков).

  5. В разделе Информация основной функции введите следующую информацию:
    1. В раскрывающемся списке Имя основной функции выберите SLR.
    2. В раскрывающемся списке Фрейм входных данных выберите InputDataFrame.
    3. В окне Фрейм выходных данных введите out.
    4. Выберите Параметр сохранения модели.
      Активируется окно Имя переменной модели, появится окно Информация функции оценки модели.
    5. В окне Имя переменной модели введите slrmodel.
    6. Выберите Показать сводку и Параметр экспорта в формат PMML.
  6. В разделе Информация функции оценки модели введите следующую информацию:
    1. В окне Имя функции оценки модели выберите SLRModelScoring.
    2. В раскрывающемся списке Фрейм входных данных выберите MInputDataFrame.
    3. В поле Фрейм выходных данных введите modelresult.
    4. В раскрывающемся списке Имя входной переменной модели выберите Model.
  7. Нажмите кнопку Далее.
    Откроется страница Настройки.
  8. В разделе Настройки основной функции в области Определение таблицы вывода выполните следующие действия:
    1. Выберите Не учитывать.
    2. В раскрывающемся списке Тип данных выберите Целое число.
    3. В окне Имя нового столбца прогноза введите Столбец прогноза.
  9. В разделе Определение представления свойств выполните следующие действия:
    1. В области Отображаемое имя свойства в поле Независимый столбец введите Независимый столбец.
    2. В раскрывающемся списке Тип элемента управления выберите Выбор столбца (один) в качестве элемента управления для Независимого столбца.
    3. В области Отображаемое имя свойства в поле Независимый столбец введите Зависимый столбец.
    4. В раскрывающемся списке Тип элемента управления выберите Выбор столбца (один) в качестве элемента управления для Зависимого столбца.
  10. В области Определение таблицы вывода в разделе Настройки основной функции выберите Учитывать все столбцы предыдущего компонента.
  11. В раскрывающемся списке Тип данных выберите Целое число.
  12. В окне Имя нового столбца прогноза введите Выходной столбец.
  13. В разделе Определение представления свойств выполните следующие действия:
    1. В области Отображаемое имя свойства введите Независимый столбец.
    2. В раскрывающемся списке Тип элемента управления выберите Выбор столбца (один) в качестве элемента управления для Независимого столбца.
  14. Нажмите кнопку Готово.
В зависимости от выполненного анализа можно создать модель, как в других компонентах.