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)
