我在SAP世界中很新,我正在尝试使用安装在Studio中的R服务器( HANA的版本: 2.3.8 &RServer3.4.0的版本)
我的任务是:
下面是一个用于在HANA上对模型进行保存的RLANG过程的一个小例子:
PROCEDURE "PA"."RF_TRAIN" (
IN data "PA"."IRIS",
OUT modelOut "PA"."TRAIN_MODEL"
)
LANGUAGE RLANG
SQL SECURITY INVOKER
DEFAULT SCHEMA "PA"
AS
BEGIN
require(randomForest)
require(dplyr)
require(pmml)
# iris <- as.data.frame(data)
data(iris)
iris <- iris %>% mutate(y = factor(ifelse(Species == "setosa", 1, 0)))
model <- randomForest(y~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, iris,
importance = TRUE,
ntree = 500)
modelOut <- as.data.frame(pmml(model))
END;(请不要感到困惑,我没有使用我的输入数据进行模型培训,这不是一个真正的例子)
下面是在SAP上使用模型的表应该是什么样的:
在本例中,培训是有效的,但我不知道如何在SAP数据库中保存随机森林对象,或者如何将随机森林对象转换为图片中的类似对象。
如有任何帮助,将不胜感激:
发布于 2017-11-08 17:04:25
如果计划使用R服务器进行预测,可以将随机森林模型存储为SAP中的BLOB对象。
遵循SAP HANA R集成指南,您需要。
BLOB属性包含到表"PA"."TRAIN_MODEL中。serialize将模型存储为二进制。Unserialize您的模型。在你的R剧本里。
require(randomForest)
require(dplyr)
require(pmml)
generateRobjColumn <- function(...){
result <- as.data.frame(cbind(
lapply(
list(...),
function(x) if (is.null(x)) NULL else serialize(x, NULL)
)
))
names(result) <- NULL
names(result[[1]]) <- NULL
result
}
# iris <- as.data.frame(data)
data(iris)
iris <- iris %>% mutate(y = factor(ifelse(Species == "setosa", 1, 0)))
model <- randomForest(y~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, iris,
importance = TRUE,
ntree = 500)
modelOut <- data.frame(ID = 1, MODEL = generateRobjColumn(pmml(model))) 请注意,如果计划按原样重用模型,则实际上不需要使用pmml。
在另一个过程中,您需要调用此表并取消模型的序列化以进行预测。
CREATE PROCEDURE "PA"."RF_PREDICT" (IN data "PA"."IRIS", IN modelOut "PA"."TRAIN_MODEL", OUT result "PA"."PRED")
LANGUAGE RLANG AS
BEGIN
rfModel <- unserialize(modelOut$MODEL[[1]])
result <- predict(rfModel, newdata = data) # or whatever steps you need for prediction
END;https://stackoverflow.com/questions/47183274
复制相似问题