728x90
library(mlbench)
data("PimaIndiansDiabetes2")

df_pima = na.omit(PimaIndiansDiabetes2)
set.seed(Sys.Date())
train.idx = sample(1:nrow(df_pima), size = nrow(df_pima) * 0.8) #테스트데이터로 사용할 행 추출
train = df_pima[train.idx,]
test = df_pima[-train.idx,]

library(rpart)
md.rpart = rpart(diabetes ~.,
                 data = train)
pred.rpart = predict(md.rpart,
                     newdata = test)

library(randomForest) #랜덤포레스트를 사용하기 위한 라이브러리 가져오기
md.rf = randomForest(diabetes ~ .,
                     data = train,
                     ntree = 300)
pred = predict(md.rf, newdata = test) 

library(e1071) #SVM을 사용하기 위한 라이브러리 가져오기
md.svm = svm(diabetes ~.,
             data = train)

pred.svm = predict(md.rf, newdata = test)

library(caret) #혼동행렬을 사용하기 위한 라이브러리 가져오기
caret::confusionMatrix(as.factor(pred),
                test$diabetes,
                positive = "pos")

caret::confusionMatrix(as.factor(pred.svm),
                       test$diabetes,
                       positive = "pos")

auc(test$diabetes,
    pred)

auc(test$diabetes,
    pred.svm)

auc(test$diabetes,
    pred.rpart)

random forest 모델이 제일 auc 값이 높음

728x90