1. 발생
분류문제를 randomForest 와 svm 두 가지 방식으로 예측하여 비교해보는 중이었습니다.
ROC Auc 지표로 비교하기 위해 확률값으로 결과를 예측하는 과정에서 svm 모델에서 오류가 발생하였습니다.
library(caret)
library(recipes)
library(dplyr)
set.seed(2022)
train <- createDataPartition(y=iris$Species, p=0.7,list = F)
NROW(iris);NROW(train)
iris.train <- iris[train,]
iris.test <- iris[-train,]
iris.rf <- train(form=Species ~ .,
data=iris.train,
method="rf",
trControl=trainControl(method="cv",number=10),
tuneLength=10)
iris.svmRadial <- train(form=Species ~ .,
data=iris.train,
method="svmRadial",
trControl=trainControl(method="cv",number=10),
tuneLength=10)
pred.rf <- predict(iris.rf, iris.test)
pred.svmRadial <- predict(iris.svmRadial, iris.test)
pred.rf <- predict(iris.rf, iris.test,type="prob")
pred.svmRadial <- predict(iris.svmRadial, iris.test,type="prob")
Warning message:
In method$prob(modelFit = modelFit, newdata = newdata, submodels = param) :
kernlab class probability calculations failed; returning NAs
2. 원인 및 해결 방법
확률값을 구하기 위해서는 train control 구문에 classProbs = TRUE를 지정해야합니다.
3. 수정
classProbs = TRUE를 추가한 후에 잘 동작합니다.
그런데, "rf" 의 경우에는 classProbs = TRUE 를 생략해도 type="prob" 의 결과를 동일하게 얻을 수 있습니다.
library(caret)
library(recipes)
library(dplyr)
set.seed(2022)
train <- createDataPartition(y=iris$Species, p=0.7,list = F)
NROW(iris);NROW(train)
iris.train <- iris[train,]
iris.test <- iris[-train,]
iris.rf <- train(form=Species ~ .,
data=iris.train,
method="rf",
trControl=trainControl(method="cv",number=10),
tuneLength=10)
iris.svmRadial <- train(form=Species ~ .,
data=iris.train,
method="svmRadial",
trControl=trainControl(method="cv",number=10),
tuneLength=10)
pred.rf <- predict(iris.rf, iris.test)
pred.svmRadial <- predict(iris.svmRadial, iris.test)
iris.rf <- train(form=Species ~ .,
data=iris.train,
method="rf",
trControl=trainControl(method="cv",
classProbs = TRUE,
number=10),
tuneLength=10)
iris.svmRadial <- train(form=Species ~ .,
data=iris.train,
method="svmRadial",
trControl=trainControl(method="cv",
classProbs = TRUE,
number=10),
tuneLength=10)
pred.rf <- predict(iris.rf, iris.test,type="prob")
pred.svmRadial <- predict(iris.svmRadial, iris.test,type="prob")
'ADP (R)' 카테고리의 다른 글
[R] 다변량 데이터 상관관계 분석 (0) | 2022.10.23 |
---|---|
[R] 결측치 처리 방법 (중위수/최빈값) (0) | 2022.10.23 |
[R] prediction from a rank-deficient fit may be misleading (0) | 2022.10.23 |
[R] 칼럼별로 결측값 갯수 구하기 (0) | 2022.10.17 |
ADP 실기 26회 불합격 (0) | 2022.10.14 |