data("iris")
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
dim(iris)
## [1] 150   5
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
normalidad_sep_len <- by(iris$Sepal.Length, iris$Species, shapiro.test)
normalidad_sep_wid <- by(iris$Sepal.Width, iris$Species, shapiro.test)
normalidad_pet_len <- by(iris$Petal.Length, iris$Species, shapiro.test)
normalidad_pet_wid <- by(iris$Petal.Width, iris$Species, shapiro.test)
#Histograms
ggplot(iris, aes(x = Sepal.Width, fill = Species)) +
  geom_histogram(alpha = 0.5, bins = 15, position = "identity") +
  labs(title = "Distribución de Sepal.Width por especie")

ggplot(iris, aes(x = Petal.Width, fill = Species)) +
  geom_histogram(alpha = 0.5, bins = 15, position = "identity") +
  labs(title = "Distribución de Petal.Width por especie")

ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
  geom_histogram(alpha = 0.5, bins = 15, position = "identity") +
  labs(title = "Distribución de Sepal.Length por especie")

ggplot(iris, aes(x = Petal.Length, fill = Species)) +
  geom_histogram(alpha = 0.5, bins = 15, position = "identity") +
  labs(title = "Distribución de Petal.Width por especie")

sapply(normalidad_sep_len, function(x) x$p.value)
##     setosa versicolor  virginica 
##  0.4595132  0.4647370  0.2583147
sapply(normalidad_sep_wid, function(x) x$p.value)
##     setosa versicolor  virginica 
##  0.2715264  0.3379951  0.1808960
sapply(normalidad_pet_len, function(x) x$p.value)
##     setosa versicolor  virginica 
## 0.05481147 0.15847784 0.10977537
sapply(normalidad_pet_wid, function(x) x$p.value)
##       setosa   versicolor    virginica 
## 8.658573e-07 2.727780e-02 8.695419e-02
#Boxplots
boxplot(Petal.Width ~ Species, data = iris, main = "Varianza de Petal.Width por especie",
        col = c("red", "blue", "green"))

boxplot(Petal.Length ~ Species, data = iris, main = "Varianza de Petal.length por especie",
        col = c("red", "blue", "green"))

boxplot(Sepal.Length ~ Species, data = iris, main = "Varianza de Sepal.length por especie",
        col = c("red", "blue", "green"))

boxplot(Sepal.Width ~ Species, data = iris, main = "Varianza de Sepal.Width por especie",
        col = c("red", "blue", "green"))

library(car)
## Warning: package 'car' was built under R version 4.4.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.4.3
# Bartlett test
bartlett.test(Sepal.Width ~ Species, data = iris)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Sepal.Width by Species
## Bartlett's K-squared = 2.0911, df = 2, p-value = 0.3515
bartlett.test(Sepal.Length ~ Species, data = iris)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Sepal.Length by Species
## Bartlett's K-squared = 16.006, df = 2, p-value = 0.0003345
bartlett.test(Petal.Length ~ Species, data = iris)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Petal.Length by Species
## Bartlett's K-squared = 55.423, df = 2, p-value = 9.229e-13
bartlett.test(Petal.Width ~ Species, data = iris)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Petal.Width by Species
## Bartlett's K-squared = 39.213, df = 2, p-value = 3.055e-09
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
num_iris <- iris[, 1:4]
# Calculate the correlation matrix
cor_matrix <- cor(num_iris)
print(cor_matrix)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411
## Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259
## Petal.Length    0.8717538  -0.4284401    1.0000000   0.9628654
## Petal.Width     0.8179411  -0.3661259    0.9628654   1.0000000
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
# Create the correlation heatmap
corrplot(cor_matrix, 
         method = "color", 
         type = "upper", 
         col = gray.colors(200), 
         addCoef.col = "black", 
         tl.col = "black")

# Separate the dataset by species and calculate the correlation matrix for each one
cor_setosa <- cor(subset(iris, Species == "setosa")[,1:4])
cor_versicolor <- cor(subset(iris, Species == "versicolor")[,1:4])
cor_virginica <- cor(subset(iris, Species == "virginica")[,1:4])

print("Correlación en Setosa")
## [1] "Correlación en Setosa"
print(cor_setosa)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    1.0000000   0.7425467    0.2671758   0.2780984
## Sepal.Width     0.7425467   1.0000000    0.1777000   0.2327520
## Petal.Length    0.2671758   0.1777000    1.0000000   0.3316300
## Petal.Width     0.2780984   0.2327520    0.3316300   1.0000000
print("Correlación en Versicolor")
## [1] "Correlación en Versicolor"
print(cor_versicolor)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    1.0000000   0.5259107    0.7540490   0.5464611
## Sepal.Width     0.5259107   1.0000000    0.5605221   0.6639987
## Petal.Length    0.7540490   0.5605221    1.0000000   0.7866681
## Petal.Width     0.5464611   0.6639987    0.7866681   1.0000000
print("Correlación en Virginica")
## [1] "Correlación en Virginica"
print(cor_virginica)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    1.0000000   0.4572278    0.8642247   0.2811077
## Sepal.Width     0.4572278   1.0000000    0.4010446   0.5377280
## Petal.Length    0.8642247   0.4010446    1.0000000   0.3221082
## Petal.Width     0.2811077   0.5377280    0.3221082   1.0000000
par(mfrow = c(1, 3))

corrplot(cor_setosa, method = "color", col = colorRampPalette(c("blue", "white", "red"))(200), title = "Setosa", mar = c(0,0,1,0))
corrplot(cor_versicolor, method = "color", col = colorRampPalette(c("blue", "white", "red"))(200), title = "Versicolor", mar = c(0,0,1,0))
corrplot(cor_virginica, method = "color", col = colorRampPalette(c("blue", "white", "red"))(200), title = "Virginica", mar = c(0,0,1,0))

#70% training set

# Fix seed for reproducibility
set.seed(123)

train_indices <- sample(1:nrow(iris), size = 0.7 * nrow(iris))
train_indices
##   [1]  14  50 118  43 150 148  90  91 143  92 137  99  72  26   7  78  81 147
##  [19] 103 117  76  32 106 109 136   9  41  74  23  27  60  53 126 119 121  96
##  [37]  38  89  34  93  69 138 130  63  13  82  97 142  25 114  21  79 124  47
##  [55] 144 120  16   6 127  86 132  39  31 134 149 112   4 128 110 102  52  22
##  [73] 129  87  35  40  30  12  88 123  64 146  67 122  37   8  51  10 115  42
##  [91]  44  85 107 139  73  20  46  17  54 108  75  80  71  15  24
test_indices <- setdiff(1:nrow(iris), train_indices)
test_indices
##  [1]   1   2   3   5  11  18  19  28  29  33  36  45  48  49  55  56  57  58  59
## [20]  61  62  65  66  68  70  77  83  84  94  95  98 100 101 104 105 111 113 116
## [39] 125 131 133 135 140 141 145
train_set <- iris[train_indices, ]
test_set <- iris[-train_indices, ]
test_set
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 145          6.7         3.3          5.7         2.5  virginica
species_test<-iris$Species[test_indices]
species_test
##  [1] setosa     setosa     setosa     setosa     setosa     setosa    
##  [7] setosa     setosa     setosa     setosa     setosa     setosa    
## [13] setosa     setosa     versicolor versicolor versicolor versicolor
## [19] versicolor versicolor versicolor versicolor versicolor versicolor
## [25] versicolor versicolor versicolor versicolor versicolor versicolor
## [31] versicolor versicolor virginica  virginica  virginica  virginica 
## [37] virginica  virginica  virginica  virginica  virginica  virginica 
## [43] virginica  virginica  virginica 
## Levels: setosa versicolor virginica
dim(test_set)
## [1] 45  5
length(species_test)
## [1] 45
library(MASS)
#QDA
qda.fit<- qda(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set <- iris[train_indices, ])
qda.fit
## Call:
## qda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
##     data = train_set <- iris[train_indices, ])
## 
## Prior probabilities of groups:
##     setosa versicolor  virginica 
##  0.3428571  0.3047619  0.3523810 
## 
## Group means:
##            Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa         4.966667    3.394444     1.461111   0.2555556
## versicolor     5.971875    2.787500     4.309375   1.3500000
## virginica      6.586486    2.948649     5.529730   1.9945946
qda.class<- predict(qda.fit,test_set)$class
qda.class
##  [1] setosa     setosa     setosa     setosa     setosa     setosa    
##  [7] setosa     setosa     setosa     setosa     setosa     setosa    
## [13] setosa     setosa     versicolor versicolor versicolor versicolor
## [19] versicolor versicolor versicolor versicolor versicolor versicolor
## [25] versicolor versicolor versicolor virginica  versicolor versicolor
## [31] versicolor versicolor virginica  virginica  virginica  virginica 
## [37] virginica  virginica  virginica  virginica  virginica  virginica 
## [43] virginica  virginica  virginica 
## Levels: setosa versicolor virginica
table(qda.class,species_test)
##             species_test
## qda.class    setosa versicolor virginica
##   setosa         14          0         0
##   versicolor      0         17         0
##   virginica       0          1        13
mean(qda.class==species_test)
## [1] 0.9777778
#LDA
lda.fit<- lda(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set <- iris[train_indices, ])
lda.fit
## Call:
## lda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
##     data = train_set <- iris[train_indices, ])
## 
## Prior probabilities of groups:
##     setosa versicolor  virginica 
##  0.3428571  0.3047619  0.3523810 
## 
## Group means:
##            Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa         4.966667    3.394444     1.461111   0.2555556
## versicolor     5.971875    2.787500     4.309375   1.3500000
## virginica      6.586486    2.948649     5.529730   1.9945946
## 
## Coefficients of linear discriminants:
##                    LD1        LD2
## Sepal.Length  0.887242 -0.1977697
## Sepal.Width   1.267866 -1.8705232
## Petal.Length -2.101235  1.1717820
## Petal.Width  -2.934756 -3.1681626
## 
## Proportion of trace:
##    LD1    LD2 
## 0.9937 0.0063
lda.pred<- predict(lda.fit,test_set)
names(lda.pred)
## [1] "class"     "posterior" "x"
lda.class<- predict(lda.fit,test_set)$class
table(lda.class,species_test)
##             species_test
## lda.class    setosa versicolor virginica
##   setosa         14          0         0
##   versicolor      0         17         0
##   virginica       0          1        13
mean(lda.class==species_test)
## [1] 0.9777778
#Fitting classification trees
library(tree)
## Warning: package 'tree' was built under R version 4.4.3
tree.fit<-tree(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set)
summary(tree.fit)
## 
## Classification tree:
## tree(formula = Species ~ Sepal.Length + Sepal.Width + Petal.Length + 
##     Petal.Width, data = train_set)
## Variables actually used in tree construction:
## [1] "Petal.Length" "Petal.Width"  "Sepal.Width" 
## Number of terminal nodes:  6 
## Residual mean deviance:  0.186 = 18.42 / 99 
## Misclassification error rate: 0.0381 = 4 / 105
tree.pred<- predict(tree.fit,test_set,type="class")
table(tree.pred,species_test)
##             species_test
## tree.pred    setosa versicolor virginica
##   setosa         14          0         0
##   versicolor      0         16         1
##   virginica       0          2        12
mean(tree.pred==species_test)
## [1] 0.9333333
plot(tree.fit)
text(tree.fit, pretty = 0)

#50% training set
train_indices2 <- sample(1:nrow(iris), size = 0.5 * nrow(iris))
train_indices2
##  [1]   5  70  16  24  32  21  55  75  83  39  54 137  48  77 142 111 141   1  30
## [20]  94 148  88 140 143 138  20 104  67  93  36  52 108  22  49  42  59  84  11
## [39] 144   8  46  85  66 107 139 110 149  72  44 146 121  45  14 130  87  33  40
## [58] 131  10  89 103  82   9   7  96  58  61  74 147  63 128  23  26  95  57
test_indices2 <- setdiff(1:nrow(iris), train_indices2)
test_indices2
##  [1]   2   3   4   6  12  13  15  17  18  19  25  27  28  29  31  34  35  37  38
## [20]  41  43  47  50  51  53  56  60  62  64  65  68  69  71  73  76  78  79  80
## [39]  81  86  90  91  92  97  98  99 100 101 102 105 106 109 112 113 114 115 116
## [58] 117 118 119 120 122 123 124 125 126 127 129 132 133 134 135 136 145 150
train_set2 <- iris[train_indices2, ]
test_set2 <- iris[-train_indices2, ]
test_set2
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 150          5.9         3.0          5.1         1.8  virginica
species_test2<-iris$Species[test_indices2]
species_test2
##  [1] setosa     setosa     setosa     setosa     setosa     setosa    
##  [7] setosa     setosa     setosa     setosa     setosa     setosa    
## [13] setosa     setosa     setosa     setosa     setosa     setosa    
## [19] setosa     setosa     setosa     setosa     setosa     versicolor
## [25] versicolor versicolor versicolor versicolor versicolor versicolor
## [31] versicolor versicolor versicolor versicolor versicolor versicolor
## [37] versicolor versicolor versicolor versicolor versicolor versicolor
## [43] versicolor versicolor versicolor versicolor versicolor virginica 
## [49] virginica  virginica  virginica  virginica  virginica  virginica 
## [55] virginica  virginica  virginica  virginica  virginica  virginica 
## [61] virginica  virginica  virginica  virginica  virginica  virginica 
## [67] virginica  virginica  virginica  virginica  virginica  virginica 
## [73] virginica  virginica  virginica 
## Levels: setosa versicolor virginica
dim(test_set2)
## [1] 75  5
length(species_test2)
## [1] 75
library(MASS)
#QDA
qda.fit2<- qda(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set2 <- iris[train_indices2, ])
qda.fit2
## Call:
## qda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
##     data = train_set2 <- iris[train_indices2, ])
## 
## Prior probabilities of groups:
##     setosa versicolor  virginica 
##  0.3600000  0.3466667  0.2933333 
## 
## Group means:
##            Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa         4.955556    3.392593     1.459259   0.2592593
## versicolor     5.919231    2.723077     4.226923   1.2884615
## virginica      6.563636    3.031818     5.445455   2.0454545
qda.class2<- predict(qda.fit2,test_set2)$class
qda.class2
##  [1] setosa     setosa     setosa     setosa     setosa     setosa    
##  [7] setosa     setosa     setosa     setosa     setosa     setosa    
## [13] setosa     setosa     setosa     setosa     setosa     setosa    
## [19] setosa     setosa     setosa     setosa     setosa     versicolor
## [25] versicolor versicolor versicolor versicolor versicolor versicolor
## [31] versicolor versicolor virginica  versicolor versicolor versicolor
## [37] versicolor versicolor versicolor versicolor versicolor versicolor
## [43] versicolor versicolor versicolor versicolor versicolor virginica 
## [49] virginica  virginica  virginica  virginica  virginica  virginica 
## [55] virginica  virginica  virginica  virginica  virginica  virginica 
## [61] virginica  virginica  virginica  virginica  virginica  virginica 
## [67] virginica  virginica  virginica  virginica  versicolor virginica 
## [73] virginica  virginica  virginica 
## Levels: setosa versicolor virginica
table(qda.class2,species_test2)
##             species_test2
## qda.class2   setosa versicolor virginica
##   setosa         23          0         0
##   versicolor      0         23         1
##   virginica       0          1        27
mean(qda.class2==species_test2)
## [1] 0.9733333
#LDA
lda.fit2<- lda(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set2 <- iris[train_indices2, ])
lda.fit2
## Call:
## lda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
##     data = train_set2 <- iris[train_indices2, ])
## 
## Prior probabilities of groups:
##     setosa versicolor  virginica 
##  0.3600000  0.3466667  0.2933333 
## 
## Group means:
##            Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa         4.955556    3.392593     1.459259   0.2592593
## versicolor     5.919231    2.723077     4.226923   1.2884615
## virginica      6.563636    3.031818     5.445455   2.0454545
## 
## Coefficients of linear discriminants:
##                     LD1         LD2
## Sepal.Length  0.9738206 -0.07467071
## Sepal.Width   1.6013974 -1.71575678
## Petal.Length -2.6691725  1.48273135
## Petal.Width  -2.7473812 -3.88018296
## 
## Proportion of trace:
##    LD1    LD2 
## 0.9868 0.0132
lda.pred2<- predict(lda.fit2,test_set2)
names(lda.pred2)
## [1] "class"     "posterior" "x"
lda.class2<- predict(lda.fit2,test_set2)$class
table(lda.class2,species_test2)
##             species_test2
## lda.class2   setosa versicolor virginica
##   setosa         23          0         0
##   versicolor      0         23         1
##   virginica       0          1        27
mean(lda.class2==species_test2)
## [1] 0.9733333
#Fitting classification trees
library(tree)
tree.fit2<-tree(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,data=train_set2)
summary(tree.fit2)
## 
## Classification tree:
## tree(formula = Species ~ Sepal.Length + Sepal.Width + Petal.Length + 
##     Petal.Width, data = train_set2)
## Variables actually used in tree construction:
## [1] "Petal.Length" "Petal.Width"  "Sepal.Length"
## Number of terminal nodes:  4 
## Residual mean deviance:  0.07048 = 5.004 / 71 
## Misclassification error rate: 0.01333 = 1 / 75
tree.pred2<- predict(tree.fit2,test_set2,type="class")
table(tree.pred2,species_test2)
##             species_test2
## tree.pred2   setosa versicolor virginica
##   setosa         23          0         0
##   versicolor      0         22         3
##   virginica       0          2        25
mean(tree.pred2==species_test2)
## [1] 0.9333333
library(tree)
plot(tree.fit2)
text(tree.fit2, pretty = 0)