ADP (R)

머신러닝 (elasticnet svm rf)

멋쟁이천재사자 2022. 9. 14. 20:06

library(MASS) 
library(caret) 

# createDataPartition 
set.seed(123) 
train <- createDataPartition(y=Boston$medv, p=0.7, list=F) 
head(train) 

Boston.train <- Boston[train,] 
Boston.test <- Boston[-train,] 

#glmnet elasticnet : alpha = 0.1 lambda = 0.08747614.
set.seed(123)
Boston.gnet <- train(form=medv ~ ., data=Boston.train, method="glmnet",  
                   trControl=trainControl(method="cv",number=10), tuneLength=10)  

#rf 오래걸림 : mtry = 5
Boston.rf <- train(form=medv ~ ., data=Boston.train, method="rf",  
                   trControl=trainControl(method="cv",number=10), tuneLength=10)

#svm : sigma = 0.04434552 and C = 32.
Boston.svm <- train(form=medv ~ ., data=Boston.train, method="svmRadialSigma",  
                   trControl=trainControl(method="cv",number=10), tuneLength=10)

# predict
gnet.pred <- predict(Boston.gnet,Boston.test)     
postResample(pred=gnet.pred, obs=Boston.test$medv) 

rf.pred <- predict(Boston.rf,Boston.test)     
postResample(pred=rf.pred, obs=Boston.test$medv) 

svm.pred <- predict(Boston.svm,Boston.test)     
postResample(pred=svm.pred, obs=Boston.test$medv) 


#comparison
models <- list(gnet=Boston.gnet, rf=Boston.rf, svm=Boston.svm) 
summary(resamples(models)) 
summary(resamples(models), metric="RMSE") 
summary(diff(resamples(models), metric="RMSE"))