# 랜덤 포레스트는 지도 머신 러닝 알고리즘
# 정확성, 단순성 및 유연성으로 인해 가장 많이 사용되는 알고리즘 중 하나
# 여러개의 DesionTree를 묶어 사용한다.
install.packages("randomForest")
library(randomForest)
dim(iris)
set.seed(123)
idx <- sample(1:nrow(iris), nrow(iris) * 0.7)
train <- iris[idx, ]
test <- iris[-idx, ]
dim(train)
dim(test)
model <- randomForest(Species ~ ., data = train, replace = TRUE)
model
(36 + 29 + 34) / nrow(train)
mode2 <- randomForest(Species ~ ., data = train, ntree = 200, mtry = 3, na.action = na.omit)
mode2
(36 + 29 + 35) / nrow(train)
# 중요변수로 랜덤포레스트 모델 생성
model3 <- randomForest(Species ~ ., data = train, importance = T)
importance(model3)
# 중요변수 시각화
varImpPlot(model3)
pred <- predict(model3, test)
pred
t <- table(pred, test$Species)
t
prop.table(t, margin = 1)
# 최적의 모델 작성을 위한 파라미터 얻기 : 반복문 사용
ntree <- c(200, 400, 600)
mtry <- c(2:4)
param <- data.frame(n = ntree, m = mtry)
for(i in param$n){
cat('ntree : ', i, '\n')
for(j in param$m){
cat('ntree : ', j, '\n')
model_imsi <- randomForest(Species ~ ., data = train, ntree = i, mtry = j, na.action = na.omit)
pred <- predict(model_imsi, test)
cat('정확도 : ', sum(diag(pred, test$Species)), '\n\n')
}
}