Java에서 예측에 사용할 수 있도록 pmml 라이브러리를 사용하여 캐럿 임의의 포리스트 모델을 내보내 려합니다. 여기에 내가 얻는 오류가 재현되어 있습니다.PMML 오류로 캐럿 모델 임의 포리스트
data(iris)
require(caret)
require(pmml)
rfGrid2 <- expand.grid(.mtry = c(1,2))
fitControl2 <- trainControl(
method = "repeatedcv",
number = NUMBER_OF_CV,
repeats = REPEATES)
model.Test <- train(Species ~ .,
data = iris,
method ="rf",
trControl = fitControl2,
ntree = NUMBER_OF_TREES,
importance = TRUE,
tuneGrid = rfGrid2)
print(model.Test)
pmml(model.Test)
Error in UseMethod("pmml") :
no applicable method for 'pmml' applied to an object of class "c('train', 'train.formula')"
나는 잠시 동안 인터넷 검색을했다
, 그리고 일반 PMML 라이브러리에 PMML 수출에 대해 실제로 약간의 정보를 찾을 수 있습니다에서 랜덤 포레스트 :
methods(pmml)
[1] pmml.ada pmml.coxph pmml.cv.glmnet pmml.glm pmml.hclust pmml.itemsets pmml.kmeans
[8] pmml.ksvm pmml.lm pmml.multinom pmml.naiveBayes pmml.nnet pmml.randomForest pmml.rfsrc
[15] pmml.rpart pmml.rules pmml.svm
그것은 직접 랜덤 포레스트 모델을 사용하여 작동하지만,하지 캐럿은 하나를 훈련 시켰습니다.
library(randomForest)
iris.rf <- randomForest(Species ~ ., data=iris, ntree=20)
# Convert to pmml
pmml(iris.rf)
# this works!!!
str(iris.rf)
List of 19
$ call : language randomForest(formula = Species ~ ., data = iris, ntree = 20)
$ type : chr "classification"
$ predicted : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
...
str(model.Test)
List of 22
$ method : chr "rf"
$ modelInfo :List of 14
..$ label : chr "Random Forest"
..$ library : chr "randomForest"
..$ loop : NULL
..$ type : chr [1:2] "Classification" "Regression"
...
덕분에, 그 선은 오류, RF = model.Test $ finalModel PMML (RF) 당신은 무엇을 의미합니까를 반환 수식 인터페이스? randomforest 패키지의 무작위 추출물일까요? –
공식 인터페이스 :'rf = randomForest (Species ~., data = iris)'. 매트릭스 인터페이스 :'rf = randomForest (y = iris [, c ("Species")], x = iris [, c ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width ")], data = iris)' – user1808924
즉,'pmml' 메서드는 수식 인터페이스를 사용하여 훈련 된 RF 모델 만 받아들입니다. Matrix 인터페이스를 사용하여 트레이닝 한 RF 모델에 오류가 발생합니다. 불행히도, Caret 패키지는 Matrix 인터페이스를 사용합니다. – user1808924