library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
library(kernlab)
## 
## Attaching package: 'kernlab'
## The following object is masked from 'package:ggplot2':
## 
##     alpha
data(iris)

inTrain <- createDataPartition(y = iris$Species, p = 0.80, list = FALSE)
trainingData <- iris[inTrain,]
testingData <- iris[-inTrain,]

dim(trainingData)
## [1] 120   5
dim(testingData)
## [1] 30  5
set.seed(13)
model <- train(Species ~., data = trainingData, method = "rf")

model
## Random Forest 
## 
## 120 samples
##   4 predictor
##   3 classes: 'setosa', 'versicolor', 'virginica' 
## 
## No pre-processing
## Resampling: Bootstrapped (25 reps) 
## Summary of sample sizes: 120, 120, 120, 120, 120, 120, ... 
## Resampling results across tuning parameters:
## 
##   mtry  Accuracy   Kappa    
##   2     0.9339057  0.8997140
##   3     0.9332980  0.8988672
##   4     0.9332980  0.8988901
## 
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was mtry = 2.
prediction <- predict(model, newdata = testingData)

confusionMatrix(prediction,testingData$Species)
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         0
##   virginica       0          0        10
## 
## Overall Statistics
##                                      
##                Accuracy : 1          
##                  95% CI : (0.8843, 1)
##     No Information Rate : 0.3333     
##     P-Value [Acc > NIR] : 4.857e-15  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           1.0000
## Specificity                 1.0000            1.0000           1.0000
## Pos Pred Value              1.0000            1.0000           1.0000
## Neg Pred Value              1.0000            1.0000           1.0000
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.3333
## Detection Prevalence        0.3333            0.3333           0.3333
## Balanced Accuracy           1.0000            1.0000           1.0000
plot(model$finalModel)

plot(varImp(model), top = 10)