In this script, I will go through the different steps to classifiy iris flowers among three species
Import the data from the University of California Irvine website
iris <- read.csv(url("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"),
header = FALSE)
Check the import
head(iris)
## V1 V2 V3 V4 V5
## 1 5.1 3.5 1.4 0.2 Iris-setosa
## 2 4.9 3.0 1.4 0.2 Iris-setosa
## 3 4.7 3.2 1.3 0.2 Iris-setosa
## 4 4.6 3.1 1.5 0.2 Iris-setosa
## 5 5.0 3.6 1.4 0.2 Iris-setosa
## 6 5.4 3.9 1.7 0.4 Iris-setosa
Change variable names
names(iris) <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")
Install ggvis package
install.packages('ggvis', repos="http://cran.us.r-project.org")
##
## The downloaded binary packages are in
## /var/folders/yq/f156071x165_9gyhs631wctr0000gn/T//RtmpcQ9Io1/downloaded_packages
library(ggvis)
Create scatterplot
iris %>% ggvis(~Sepal.Length, ~Sepal.Width, fill = ~Species) %>% layer_points()
iris %>% ggvis(~Petal.Length, ~Petal.Width, fill = ~Species) %>% layer_points()
Check correlations
cor(iris$Petal.Length, iris$Petal.Width)
## [1] 0.9627571
cor(iris$Sepal.Length, iris$Sepal.Width)
## [1] -0.1093692
Create correlation matrices
x <- levels(iris$Species)
cor(iris[iris$Species == x[1], 1:4])
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 1.0000000 0.7467804 0.2638741 0.2790916
## Sepal.Width 0.7467804 1.0000000 0.1766946 0.2799729
## Petal.Length 0.2638741 0.1766946 1.0000000 0.3063082
## Petal.Width 0.2790916 0.2799729 0.3063082 1.0000000
cor(iris[iris$Species == x[2], 1:4])
## 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
cor(iris[iris$Species == x[3], 1:4])
## 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
Division of species
table(iris$Species)
##
## Iris-setosa Iris-versicolor Iris-virginica
## 50 50 50
Standardize data - create standardization function
standardize <- function(vec){
num <- vec - min(vec)
den <- max(vec) - min(vec)
return(num/den)
}
Standardize numerical data
iris_norm <- as.data.frame(lapply(iris[,1:4], standardize))
print(iris_norm)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 0.22222222 0.62500000 0.06779661 0.04166667
## 2 0.16666667 0.41666667 0.06779661 0.04166667
## 3 0.11111111 0.50000000 0.05084746 0.04166667
## 4 0.08333333 0.45833333 0.08474576 0.04166667
## 5 0.19444444 0.66666667 0.06779661 0.04166667
## 6 0.30555556 0.79166667 0.11864407 0.12500000
## 7 0.08333333 0.58333333 0.06779661 0.08333333
## 8 0.19444444 0.58333333 0.08474576 0.04166667
## 9 0.02777778 0.37500000 0.06779661 0.04166667
## 10 0.16666667 0.45833333 0.08474576 0.00000000
## 11 0.30555556 0.70833333 0.08474576 0.04166667
## 12 0.13888889 0.58333333 0.10169492 0.04166667
## 13 0.13888889 0.41666667 0.06779661 0.00000000
## 14 0.00000000 0.41666667 0.01694915 0.00000000
## 15 0.41666667 0.83333333 0.03389831 0.04166667
## 16 0.38888889 1.00000000 0.08474576 0.12500000
## 17 0.30555556 0.79166667 0.05084746 0.12500000
## 18 0.22222222 0.62500000 0.06779661 0.08333333
## 19 0.38888889 0.75000000 0.11864407 0.08333333
## 20 0.22222222 0.75000000 0.08474576 0.08333333
## 21 0.30555556 0.58333333 0.11864407 0.04166667
## 22 0.22222222 0.70833333 0.08474576 0.12500000
## 23 0.08333333 0.66666667 0.00000000 0.04166667
## 24 0.22222222 0.54166667 0.11864407 0.16666667
## 25 0.13888889 0.58333333 0.15254237 0.04166667
## 26 0.19444444 0.41666667 0.10169492 0.04166667
## 27 0.19444444 0.58333333 0.10169492 0.12500000
## 28 0.25000000 0.62500000 0.08474576 0.04166667
## 29 0.25000000 0.58333333 0.06779661 0.04166667
## 30 0.11111111 0.50000000 0.10169492 0.04166667
## 31 0.13888889 0.45833333 0.10169492 0.04166667
## 32 0.30555556 0.58333333 0.08474576 0.12500000
## 33 0.25000000 0.87500000 0.08474576 0.00000000
## 34 0.33333333 0.91666667 0.06779661 0.04166667
## 35 0.16666667 0.45833333 0.08474576 0.00000000
## 36 0.19444444 0.50000000 0.03389831 0.04166667
## 37 0.33333333 0.62500000 0.05084746 0.04166667
## 38 0.16666667 0.45833333 0.08474576 0.00000000
## 39 0.02777778 0.41666667 0.05084746 0.04166667
## 40 0.22222222 0.58333333 0.08474576 0.04166667
## 41 0.19444444 0.62500000 0.05084746 0.08333333
## 42 0.05555556 0.12500000 0.05084746 0.08333333
## 43 0.02777778 0.50000000 0.05084746 0.04166667
## 44 0.19444444 0.62500000 0.10169492 0.20833333
## 45 0.22222222 0.75000000 0.15254237 0.12500000
## 46 0.13888889 0.41666667 0.06779661 0.08333333
## 47 0.22222222 0.75000000 0.10169492 0.04166667
## 48 0.08333333 0.50000000 0.06779661 0.04166667
## 49 0.27777778 0.70833333 0.08474576 0.04166667
## 50 0.19444444 0.54166667 0.06779661 0.04166667
## 51 0.75000000 0.50000000 0.62711864 0.54166667
## 52 0.58333333 0.50000000 0.59322034 0.58333333
## 53 0.72222222 0.45833333 0.66101695 0.58333333
## 54 0.33333333 0.12500000 0.50847458 0.50000000
## 55 0.61111111 0.33333333 0.61016949 0.58333333
## 56 0.38888889 0.33333333 0.59322034 0.50000000
## 57 0.55555556 0.54166667 0.62711864 0.62500000
## 58 0.16666667 0.16666667 0.38983051 0.37500000
## 59 0.63888889 0.37500000 0.61016949 0.50000000
## 60 0.25000000 0.29166667 0.49152542 0.54166667
## 61 0.19444444 0.00000000 0.42372881 0.37500000
## 62 0.44444444 0.41666667 0.54237288 0.58333333
## 63 0.47222222 0.08333333 0.50847458 0.37500000
## 64 0.50000000 0.37500000 0.62711864 0.54166667
## 65 0.36111111 0.37500000 0.44067797 0.50000000
## 66 0.66666667 0.45833333 0.57627119 0.54166667
## 67 0.36111111 0.41666667 0.59322034 0.58333333
## 68 0.41666667 0.29166667 0.52542373 0.37500000
## 69 0.52777778 0.08333333 0.59322034 0.58333333
## 70 0.36111111 0.20833333 0.49152542 0.41666667
## 71 0.44444444 0.50000000 0.64406780 0.70833333
## 72 0.50000000 0.33333333 0.50847458 0.50000000
## 73 0.55555556 0.20833333 0.66101695 0.58333333
## 74 0.50000000 0.33333333 0.62711864 0.45833333
## 75 0.58333333 0.37500000 0.55932203 0.50000000
## 76 0.63888889 0.41666667 0.57627119 0.54166667
## 77 0.69444444 0.33333333 0.64406780 0.54166667
## 78 0.66666667 0.41666667 0.67796610 0.66666667
## 79 0.47222222 0.37500000 0.59322034 0.58333333
## 80 0.38888889 0.25000000 0.42372881 0.37500000
## 81 0.33333333 0.16666667 0.47457627 0.41666667
## 82 0.33333333 0.16666667 0.45762712 0.37500000
## 83 0.41666667 0.29166667 0.49152542 0.45833333
## 84 0.47222222 0.29166667 0.69491525 0.62500000
## 85 0.30555556 0.41666667 0.59322034 0.58333333
## 86 0.47222222 0.58333333 0.59322034 0.62500000
## 87 0.66666667 0.45833333 0.62711864 0.58333333
## 88 0.55555556 0.12500000 0.57627119 0.50000000
## 89 0.36111111 0.41666667 0.52542373 0.50000000
## 90 0.33333333 0.20833333 0.50847458 0.50000000
## 91 0.33333333 0.25000000 0.57627119 0.45833333
## 92 0.50000000 0.41666667 0.61016949 0.54166667
## 93 0.41666667 0.25000000 0.50847458 0.45833333
## 94 0.19444444 0.12500000 0.38983051 0.37500000
## 95 0.36111111 0.29166667 0.54237288 0.50000000
## 96 0.38888889 0.41666667 0.54237288 0.45833333
## 97 0.38888889 0.37500000 0.54237288 0.50000000
## 98 0.52777778 0.37500000 0.55932203 0.50000000
## 99 0.22222222 0.20833333 0.33898305 0.41666667
## 100 0.38888889 0.33333333 0.52542373 0.50000000
## 101 0.55555556 0.54166667 0.84745763 1.00000000
## 102 0.41666667 0.29166667 0.69491525 0.75000000
## 103 0.77777778 0.41666667 0.83050847 0.83333333
## 104 0.55555556 0.37500000 0.77966102 0.70833333
## 105 0.61111111 0.41666667 0.81355932 0.87500000
## 106 0.91666667 0.41666667 0.94915254 0.83333333
## 107 0.16666667 0.20833333 0.59322034 0.66666667
## 108 0.83333333 0.37500000 0.89830508 0.70833333
## 109 0.66666667 0.20833333 0.81355932 0.70833333
## 110 0.80555556 0.66666667 0.86440678 1.00000000
## 111 0.61111111 0.50000000 0.69491525 0.79166667
## 112 0.58333333 0.29166667 0.72881356 0.75000000
## 113 0.69444444 0.41666667 0.76271186 0.83333333
## 114 0.38888889 0.20833333 0.67796610 0.79166667
## 115 0.41666667 0.33333333 0.69491525 0.95833333
## 116 0.58333333 0.50000000 0.72881356 0.91666667
## 117 0.61111111 0.41666667 0.76271186 0.70833333
## 118 0.94444444 0.75000000 0.96610169 0.87500000
## 119 0.94444444 0.25000000 1.00000000 0.91666667
## 120 0.47222222 0.08333333 0.67796610 0.58333333
## 121 0.72222222 0.50000000 0.79661017 0.91666667
## 122 0.36111111 0.33333333 0.66101695 0.79166667
## 123 0.94444444 0.33333333 0.96610169 0.79166667
## 124 0.55555556 0.29166667 0.66101695 0.70833333
## 125 0.66666667 0.54166667 0.79661017 0.83333333
## 126 0.80555556 0.50000000 0.84745763 0.70833333
## 127 0.52777778 0.33333333 0.64406780 0.70833333
## 128 0.50000000 0.41666667 0.66101695 0.70833333
## 129 0.58333333 0.33333333 0.77966102 0.83333333
## 130 0.80555556 0.41666667 0.81355932 0.62500000
## 131 0.86111111 0.33333333 0.86440678 0.75000000
## 132 1.00000000 0.75000000 0.91525424 0.79166667
## 133 0.58333333 0.33333333 0.77966102 0.87500000
## 134 0.55555556 0.33333333 0.69491525 0.58333333
## 135 0.50000000 0.25000000 0.77966102 0.54166667
## 136 0.94444444 0.41666667 0.86440678 0.91666667
## 137 0.55555556 0.58333333 0.77966102 0.95833333
## 138 0.58333333 0.45833333 0.76271186 0.70833333
## 139 0.47222222 0.41666667 0.64406780 0.70833333
## 140 0.72222222 0.45833333 0.74576271 0.83333333
## 141 0.66666667 0.45833333 0.77966102 0.95833333
## 142 0.72222222 0.45833333 0.69491525 0.91666667
## 143 0.41666667 0.29166667 0.69491525 0.75000000
## 144 0.69444444 0.50000000 0.83050847 0.91666667
## 145 0.66666667 0.54166667 0.79661017 1.00000000
## 146 0.66666667 0.41666667 0.71186441 0.91666667
## 147 0.55555556 0.20833333 0.67796610 0.75000000
## 148 0.61111111 0.41666667 0.71186441 0.79166667
## 149 0.52777778 0.58333333 0.74576271 0.91666667
## 150 0.44444444 0.41666667 0.69491525 0.70833333
Add back Species
iris_norm$Species <- iris$Species
print(iris_norm)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 0.22222222 0.62500000 0.06779661 0.04166667 Iris-setosa
## 2 0.16666667 0.41666667 0.06779661 0.04166667 Iris-setosa
## 3 0.11111111 0.50000000 0.05084746 0.04166667 Iris-setosa
## 4 0.08333333 0.45833333 0.08474576 0.04166667 Iris-setosa
## 5 0.19444444 0.66666667 0.06779661 0.04166667 Iris-setosa
## 6 0.30555556 0.79166667 0.11864407 0.12500000 Iris-setosa
## 7 0.08333333 0.58333333 0.06779661 0.08333333 Iris-setosa
## 8 0.19444444 0.58333333 0.08474576 0.04166667 Iris-setosa
## 9 0.02777778 0.37500000 0.06779661 0.04166667 Iris-setosa
## 10 0.16666667 0.45833333 0.08474576 0.00000000 Iris-setosa
## 11 0.30555556 0.70833333 0.08474576 0.04166667 Iris-setosa
## 12 0.13888889 0.58333333 0.10169492 0.04166667 Iris-setosa
## 13 0.13888889 0.41666667 0.06779661 0.00000000 Iris-setosa
## 14 0.00000000 0.41666667 0.01694915 0.00000000 Iris-setosa
## 15 0.41666667 0.83333333 0.03389831 0.04166667 Iris-setosa
## 16 0.38888889 1.00000000 0.08474576 0.12500000 Iris-setosa
## 17 0.30555556 0.79166667 0.05084746 0.12500000 Iris-setosa
## 18 0.22222222 0.62500000 0.06779661 0.08333333 Iris-setosa
## 19 0.38888889 0.75000000 0.11864407 0.08333333 Iris-setosa
## 20 0.22222222 0.75000000 0.08474576 0.08333333 Iris-setosa
## 21 0.30555556 0.58333333 0.11864407 0.04166667 Iris-setosa
## 22 0.22222222 0.70833333 0.08474576 0.12500000 Iris-setosa
## 23 0.08333333 0.66666667 0.00000000 0.04166667 Iris-setosa
## 24 0.22222222 0.54166667 0.11864407 0.16666667 Iris-setosa
## 25 0.13888889 0.58333333 0.15254237 0.04166667 Iris-setosa
## 26 0.19444444 0.41666667 0.10169492 0.04166667 Iris-setosa
## 27 0.19444444 0.58333333 0.10169492 0.12500000 Iris-setosa
## 28 0.25000000 0.62500000 0.08474576 0.04166667 Iris-setosa
## 29 0.25000000 0.58333333 0.06779661 0.04166667 Iris-setosa
## 30 0.11111111 0.50000000 0.10169492 0.04166667 Iris-setosa
## 31 0.13888889 0.45833333 0.10169492 0.04166667 Iris-setosa
## 32 0.30555556 0.58333333 0.08474576 0.12500000 Iris-setosa
## 33 0.25000000 0.87500000 0.08474576 0.00000000 Iris-setosa
## 34 0.33333333 0.91666667 0.06779661 0.04166667 Iris-setosa
## 35 0.16666667 0.45833333 0.08474576 0.00000000 Iris-setosa
## 36 0.19444444 0.50000000 0.03389831 0.04166667 Iris-setosa
## 37 0.33333333 0.62500000 0.05084746 0.04166667 Iris-setosa
## 38 0.16666667 0.45833333 0.08474576 0.00000000 Iris-setosa
## 39 0.02777778 0.41666667 0.05084746 0.04166667 Iris-setosa
## 40 0.22222222 0.58333333 0.08474576 0.04166667 Iris-setosa
## 41 0.19444444 0.62500000 0.05084746 0.08333333 Iris-setosa
## 42 0.05555556 0.12500000 0.05084746 0.08333333 Iris-setosa
## 43 0.02777778 0.50000000 0.05084746 0.04166667 Iris-setosa
## 44 0.19444444 0.62500000 0.10169492 0.20833333 Iris-setosa
## 45 0.22222222 0.75000000 0.15254237 0.12500000 Iris-setosa
## 46 0.13888889 0.41666667 0.06779661 0.08333333 Iris-setosa
## 47 0.22222222 0.75000000 0.10169492 0.04166667 Iris-setosa
## 48 0.08333333 0.50000000 0.06779661 0.04166667 Iris-setosa
## 49 0.27777778 0.70833333 0.08474576 0.04166667 Iris-setosa
## 50 0.19444444 0.54166667 0.06779661 0.04166667 Iris-setosa
## 51 0.75000000 0.50000000 0.62711864 0.54166667 Iris-versicolor
## 52 0.58333333 0.50000000 0.59322034 0.58333333 Iris-versicolor
## 53 0.72222222 0.45833333 0.66101695 0.58333333 Iris-versicolor
## 54 0.33333333 0.12500000 0.50847458 0.50000000 Iris-versicolor
## 55 0.61111111 0.33333333 0.61016949 0.58333333 Iris-versicolor
## 56 0.38888889 0.33333333 0.59322034 0.50000000 Iris-versicolor
## 57 0.55555556 0.54166667 0.62711864 0.62500000 Iris-versicolor
## 58 0.16666667 0.16666667 0.38983051 0.37500000 Iris-versicolor
## 59 0.63888889 0.37500000 0.61016949 0.50000000 Iris-versicolor
## 60 0.25000000 0.29166667 0.49152542 0.54166667 Iris-versicolor
## 61 0.19444444 0.00000000 0.42372881 0.37500000 Iris-versicolor
## 62 0.44444444 0.41666667 0.54237288 0.58333333 Iris-versicolor
## 63 0.47222222 0.08333333 0.50847458 0.37500000 Iris-versicolor
## 64 0.50000000 0.37500000 0.62711864 0.54166667 Iris-versicolor
## 65 0.36111111 0.37500000 0.44067797 0.50000000 Iris-versicolor
## 66 0.66666667 0.45833333 0.57627119 0.54166667 Iris-versicolor
## 67 0.36111111 0.41666667 0.59322034 0.58333333 Iris-versicolor
## 68 0.41666667 0.29166667 0.52542373 0.37500000 Iris-versicolor
## 69 0.52777778 0.08333333 0.59322034 0.58333333 Iris-versicolor
## 70 0.36111111 0.20833333 0.49152542 0.41666667 Iris-versicolor
## 71 0.44444444 0.50000000 0.64406780 0.70833333 Iris-versicolor
## 72 0.50000000 0.33333333 0.50847458 0.50000000 Iris-versicolor
## 73 0.55555556 0.20833333 0.66101695 0.58333333 Iris-versicolor
## 74 0.50000000 0.33333333 0.62711864 0.45833333 Iris-versicolor
## 75 0.58333333 0.37500000 0.55932203 0.50000000 Iris-versicolor
## 76 0.63888889 0.41666667 0.57627119 0.54166667 Iris-versicolor
## 77 0.69444444 0.33333333 0.64406780 0.54166667 Iris-versicolor
## 78 0.66666667 0.41666667 0.67796610 0.66666667 Iris-versicolor
## 79 0.47222222 0.37500000 0.59322034 0.58333333 Iris-versicolor
## 80 0.38888889 0.25000000 0.42372881 0.37500000 Iris-versicolor
## 81 0.33333333 0.16666667 0.47457627 0.41666667 Iris-versicolor
## 82 0.33333333 0.16666667 0.45762712 0.37500000 Iris-versicolor
## 83 0.41666667 0.29166667 0.49152542 0.45833333 Iris-versicolor
## 84 0.47222222 0.29166667 0.69491525 0.62500000 Iris-versicolor
## 85 0.30555556 0.41666667 0.59322034 0.58333333 Iris-versicolor
## 86 0.47222222 0.58333333 0.59322034 0.62500000 Iris-versicolor
## 87 0.66666667 0.45833333 0.62711864 0.58333333 Iris-versicolor
## 88 0.55555556 0.12500000 0.57627119 0.50000000 Iris-versicolor
## 89 0.36111111 0.41666667 0.52542373 0.50000000 Iris-versicolor
## 90 0.33333333 0.20833333 0.50847458 0.50000000 Iris-versicolor
## 91 0.33333333 0.25000000 0.57627119 0.45833333 Iris-versicolor
## 92 0.50000000 0.41666667 0.61016949 0.54166667 Iris-versicolor
## 93 0.41666667 0.25000000 0.50847458 0.45833333 Iris-versicolor
## 94 0.19444444 0.12500000 0.38983051 0.37500000 Iris-versicolor
## 95 0.36111111 0.29166667 0.54237288 0.50000000 Iris-versicolor
## 96 0.38888889 0.41666667 0.54237288 0.45833333 Iris-versicolor
## 97 0.38888889 0.37500000 0.54237288 0.50000000 Iris-versicolor
## 98 0.52777778 0.37500000 0.55932203 0.50000000 Iris-versicolor
## 99 0.22222222 0.20833333 0.33898305 0.41666667 Iris-versicolor
## 100 0.38888889 0.33333333 0.52542373 0.50000000 Iris-versicolor
## 101 0.55555556 0.54166667 0.84745763 1.00000000 Iris-virginica
## 102 0.41666667 0.29166667 0.69491525 0.75000000 Iris-virginica
## 103 0.77777778 0.41666667 0.83050847 0.83333333 Iris-virginica
## 104 0.55555556 0.37500000 0.77966102 0.70833333 Iris-virginica
## 105 0.61111111 0.41666667 0.81355932 0.87500000 Iris-virginica
## 106 0.91666667 0.41666667 0.94915254 0.83333333 Iris-virginica
## 107 0.16666667 0.20833333 0.59322034 0.66666667 Iris-virginica
## 108 0.83333333 0.37500000 0.89830508 0.70833333 Iris-virginica
## 109 0.66666667 0.20833333 0.81355932 0.70833333 Iris-virginica
## 110 0.80555556 0.66666667 0.86440678 1.00000000 Iris-virginica
## 111 0.61111111 0.50000000 0.69491525 0.79166667 Iris-virginica
## 112 0.58333333 0.29166667 0.72881356 0.75000000 Iris-virginica
## 113 0.69444444 0.41666667 0.76271186 0.83333333 Iris-virginica
## 114 0.38888889 0.20833333 0.67796610 0.79166667 Iris-virginica
## 115 0.41666667 0.33333333 0.69491525 0.95833333 Iris-virginica
## 116 0.58333333 0.50000000 0.72881356 0.91666667 Iris-virginica
## 117 0.61111111 0.41666667 0.76271186 0.70833333 Iris-virginica
## 118 0.94444444 0.75000000 0.96610169 0.87500000 Iris-virginica
## 119 0.94444444 0.25000000 1.00000000 0.91666667 Iris-virginica
## 120 0.47222222 0.08333333 0.67796610 0.58333333 Iris-virginica
## 121 0.72222222 0.50000000 0.79661017 0.91666667 Iris-virginica
## 122 0.36111111 0.33333333 0.66101695 0.79166667 Iris-virginica
## 123 0.94444444 0.33333333 0.96610169 0.79166667 Iris-virginica
## 124 0.55555556 0.29166667 0.66101695 0.70833333 Iris-virginica
## 125 0.66666667 0.54166667 0.79661017 0.83333333 Iris-virginica
## 126 0.80555556 0.50000000 0.84745763 0.70833333 Iris-virginica
## 127 0.52777778 0.33333333 0.64406780 0.70833333 Iris-virginica
## 128 0.50000000 0.41666667 0.66101695 0.70833333 Iris-virginica
## 129 0.58333333 0.33333333 0.77966102 0.83333333 Iris-virginica
## 130 0.80555556 0.41666667 0.81355932 0.62500000 Iris-virginica
## 131 0.86111111 0.33333333 0.86440678 0.75000000 Iris-virginica
## 132 1.00000000 0.75000000 0.91525424 0.79166667 Iris-virginica
## 133 0.58333333 0.33333333 0.77966102 0.87500000 Iris-virginica
## 134 0.55555556 0.33333333 0.69491525 0.58333333 Iris-virginica
## 135 0.50000000 0.25000000 0.77966102 0.54166667 Iris-virginica
## 136 0.94444444 0.41666667 0.86440678 0.91666667 Iris-virginica
## 137 0.55555556 0.58333333 0.77966102 0.95833333 Iris-virginica
## 138 0.58333333 0.45833333 0.76271186 0.70833333 Iris-virginica
## 139 0.47222222 0.41666667 0.64406780 0.70833333 Iris-virginica
## 140 0.72222222 0.45833333 0.74576271 0.83333333 Iris-virginica
## 141 0.66666667 0.45833333 0.77966102 0.95833333 Iris-virginica
## 142 0.72222222 0.45833333 0.69491525 0.91666667 Iris-virginica
## 143 0.41666667 0.29166667 0.69491525 0.75000000 Iris-virginica
## 144 0.69444444 0.50000000 0.83050847 0.91666667 Iris-virginica
## 145 0.66666667 0.54166667 0.79661017 1.00000000 Iris-virginica
## 146 0.66666667 0.41666667 0.71186441 0.91666667 Iris-virginica
## 147 0.55555556 0.20833333 0.67796610 0.75000000 Iris-virginica
## 148 0.61111111 0.41666667 0.71186441 0.79166667 Iris-virginica
## 149 0.52777778 0.58333333 0.74576271 0.91666667 Iris-virginica
## 150 0.44444444 0.41666667 0.69491525 0.70833333 Iris-virginica
Set seed
set.seed(12345)
Create training set
div <- sample(2, size = nrow(iris_norm), replace = T, prob = c(0.67, 0.33))
print(div)
## [1] 2 2 2 2 1 1 1 1 2 2 1 1 2 1 1 1 1 1 1 2 1 1 2 2 1 1 2 1 1 1 2 1 1 2 1
## [36] 1 2 2 1 1 2 1 2 2 1 1 1 1 1 1 2 2 1 1 2 1 2 1 1 1 2 1 2 2 2 1 2 1 1 2
## [71] 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 2 1 2 1 2 2 1 1 2 1 2 2 1 1 1 1 2 1 1
## [106] 2 1 2 1 1 1 1 2 1 2 2 2 1 1 1 1 1 1 2 2 2 2 1 1 2 1 2 2 1 2 2 2 1 1 2
## [141] 1 2 1 1 1 2 2 1 2 1
training_set <- iris_norm[div == 1, 1:4]
print(training_set)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 5 0.19444444 0.66666667 0.06779661 0.04166667
## 6 0.30555556 0.79166667 0.11864407 0.12500000
## 7 0.08333333 0.58333333 0.06779661 0.08333333
## 8 0.19444444 0.58333333 0.08474576 0.04166667
## 11 0.30555556 0.70833333 0.08474576 0.04166667
## 12 0.13888889 0.58333333 0.10169492 0.04166667
## 14 0.00000000 0.41666667 0.01694915 0.00000000
## 15 0.41666667 0.83333333 0.03389831 0.04166667
## 16 0.38888889 1.00000000 0.08474576 0.12500000
## 17 0.30555556 0.79166667 0.05084746 0.12500000
## 18 0.22222222 0.62500000 0.06779661 0.08333333
## 19 0.38888889 0.75000000 0.11864407 0.08333333
## 21 0.30555556 0.58333333 0.11864407 0.04166667
## 22 0.22222222 0.70833333 0.08474576 0.12500000
## 25 0.13888889 0.58333333 0.15254237 0.04166667
## 26 0.19444444 0.41666667 0.10169492 0.04166667
## 28 0.25000000 0.62500000 0.08474576 0.04166667
## 29 0.25000000 0.58333333 0.06779661 0.04166667
## 30 0.11111111 0.50000000 0.10169492 0.04166667
## 32 0.30555556 0.58333333 0.08474576 0.12500000
## 33 0.25000000 0.87500000 0.08474576 0.00000000
## 35 0.16666667 0.45833333 0.08474576 0.00000000
## 36 0.19444444 0.50000000 0.03389831 0.04166667
## 39 0.02777778 0.41666667 0.05084746 0.04166667
## 40 0.22222222 0.58333333 0.08474576 0.04166667
## 42 0.05555556 0.12500000 0.05084746 0.08333333
## 45 0.22222222 0.75000000 0.15254237 0.12500000
## 46 0.13888889 0.41666667 0.06779661 0.08333333
## 47 0.22222222 0.75000000 0.10169492 0.04166667
## 48 0.08333333 0.50000000 0.06779661 0.04166667
## 49 0.27777778 0.70833333 0.08474576 0.04166667
## 50 0.19444444 0.54166667 0.06779661 0.04166667
## 53 0.72222222 0.45833333 0.66101695 0.58333333
## 54 0.33333333 0.12500000 0.50847458 0.50000000
## 56 0.38888889 0.33333333 0.59322034 0.50000000
## 58 0.16666667 0.16666667 0.38983051 0.37500000
## 59 0.63888889 0.37500000 0.61016949 0.50000000
## 60 0.25000000 0.29166667 0.49152542 0.54166667
## 62 0.44444444 0.41666667 0.54237288 0.58333333
## 66 0.66666667 0.45833333 0.57627119 0.54166667
## 68 0.41666667 0.29166667 0.52542373 0.37500000
## 69 0.52777778 0.08333333 0.59322034 0.58333333
## 72 0.50000000 0.33333333 0.50847458 0.50000000
## 73 0.55555556 0.20833333 0.66101695 0.58333333
## 74 0.50000000 0.33333333 0.62711864 0.45833333
## 75 0.58333333 0.37500000 0.55932203 0.50000000
## 76 0.63888889 0.41666667 0.57627119 0.54166667
## 78 0.66666667 0.41666667 0.67796610 0.66666667
## 79 0.47222222 0.37500000 0.59322034 0.58333333
## 80 0.38888889 0.25000000 0.42372881 0.37500000
## 82 0.33333333 0.16666667 0.45762712 0.37500000
## 83 0.41666667 0.29166667 0.49152542 0.45833333
## 84 0.47222222 0.29166667 0.69491525 0.62500000
## 85 0.30555556 0.41666667 0.59322034 0.58333333
## 86 0.47222222 0.58333333 0.59322034 0.62500000
## 88 0.55555556 0.12500000 0.57627119 0.50000000
## 90 0.33333333 0.20833333 0.50847458 0.50000000
## 93 0.41666667 0.25000000 0.50847458 0.45833333
## 94 0.19444444 0.12500000 0.38983051 0.37500000
## 96 0.38888889 0.41666667 0.54237288 0.45833333
## 99 0.22222222 0.20833333 0.33898305 0.41666667
## 100 0.38888889 0.33333333 0.52542373 0.50000000
## 101 0.55555556 0.54166667 0.84745763 1.00000000
## 102 0.41666667 0.29166667 0.69491525 0.75000000
## 104 0.55555556 0.37500000 0.77966102 0.70833333
## 105 0.61111111 0.41666667 0.81355932 0.87500000
## 107 0.16666667 0.20833333 0.59322034 0.66666667
## 109 0.66666667 0.20833333 0.81355932 0.70833333
## 110 0.80555556 0.66666667 0.86440678 1.00000000
## 111 0.61111111 0.50000000 0.69491525 0.79166667
## 112 0.58333333 0.29166667 0.72881356 0.75000000
## 114 0.38888889 0.20833333 0.67796610 0.79166667
## 118 0.94444444 0.75000000 0.96610169 0.87500000
## 119 0.94444444 0.25000000 1.00000000 0.91666667
## 120 0.47222222 0.08333333 0.67796610 0.58333333
## 121 0.72222222 0.50000000 0.79661017 0.91666667
## 122 0.36111111 0.33333333 0.66101695 0.79166667
## 123 0.94444444 0.33333333 0.96610169 0.79166667
## 128 0.50000000 0.41666667 0.66101695 0.70833333
## 129 0.58333333 0.33333333 0.77966102 0.83333333
## 131 0.86111111 0.33333333 0.86440678 0.75000000
## 134 0.55555556 0.33333333 0.69491525 0.58333333
## 138 0.58333333 0.45833333 0.76271186 0.70833333
## 139 0.47222222 0.41666667 0.64406780 0.70833333
## 141 0.66666667 0.45833333 0.77966102 0.95833333
## 143 0.41666667 0.29166667 0.69491525 0.75000000
## 144 0.69444444 0.50000000 0.83050847 0.91666667
## 145 0.66666667 0.54166667 0.79661017 1.00000000
## 148 0.61111111 0.41666667 0.71186441 0.79166667
## 150 0.44444444 0.41666667 0.69491525 0.70833333
Create test set
test_set <- iris_norm[div == 2, 1:4]
print(test_set)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 0.22222222 0.62500000 0.06779661 0.04166667
## 2 0.16666667 0.41666667 0.06779661 0.04166667
## 3 0.11111111 0.50000000 0.05084746 0.04166667
## 4 0.08333333 0.45833333 0.08474576 0.04166667
## 9 0.02777778 0.37500000 0.06779661 0.04166667
## 10 0.16666667 0.45833333 0.08474576 0.00000000
## 13 0.13888889 0.41666667 0.06779661 0.00000000
## 20 0.22222222 0.75000000 0.08474576 0.08333333
## 23 0.08333333 0.66666667 0.00000000 0.04166667
## 24 0.22222222 0.54166667 0.11864407 0.16666667
## 27 0.19444444 0.58333333 0.10169492 0.12500000
## 31 0.13888889 0.45833333 0.10169492 0.04166667
## 34 0.33333333 0.91666667 0.06779661 0.04166667
## 37 0.33333333 0.62500000 0.05084746 0.04166667
## 38 0.16666667 0.45833333 0.08474576 0.00000000
## 41 0.19444444 0.62500000 0.05084746 0.08333333
## 43 0.02777778 0.50000000 0.05084746 0.04166667
## 44 0.19444444 0.62500000 0.10169492 0.20833333
## 51 0.75000000 0.50000000 0.62711864 0.54166667
## 52 0.58333333 0.50000000 0.59322034 0.58333333
## 55 0.61111111 0.33333333 0.61016949 0.58333333
## 57 0.55555556 0.54166667 0.62711864 0.62500000
## 61 0.19444444 0.00000000 0.42372881 0.37500000
## 63 0.47222222 0.08333333 0.50847458 0.37500000
## 64 0.50000000 0.37500000 0.62711864 0.54166667
## 65 0.36111111 0.37500000 0.44067797 0.50000000
## 67 0.36111111 0.41666667 0.59322034 0.58333333
## 70 0.36111111 0.20833333 0.49152542 0.41666667
## 71 0.44444444 0.50000000 0.64406780 0.70833333
## 77 0.69444444 0.33333333 0.64406780 0.54166667
## 81 0.33333333 0.16666667 0.47457627 0.41666667
## 87 0.66666667 0.45833333 0.62711864 0.58333333
## 89 0.36111111 0.41666667 0.52542373 0.50000000
## 91 0.33333333 0.25000000 0.57627119 0.45833333
## 92 0.50000000 0.41666667 0.61016949 0.54166667
## 95 0.36111111 0.29166667 0.54237288 0.50000000
## 97 0.38888889 0.37500000 0.54237288 0.50000000
## 98 0.52777778 0.37500000 0.55932203 0.50000000
## 103 0.77777778 0.41666667 0.83050847 0.83333333
## 106 0.91666667 0.41666667 0.94915254 0.83333333
## 108 0.83333333 0.37500000 0.89830508 0.70833333
## 113 0.69444444 0.41666667 0.76271186 0.83333333
## 115 0.41666667 0.33333333 0.69491525 0.95833333
## 116 0.58333333 0.50000000 0.72881356 0.91666667
## 117 0.61111111 0.41666667 0.76271186 0.70833333
## 124 0.55555556 0.29166667 0.66101695 0.70833333
## 125 0.66666667 0.54166667 0.79661017 0.83333333
## 126 0.80555556 0.50000000 0.84745763 0.70833333
## 127 0.52777778 0.33333333 0.64406780 0.70833333
## 130 0.80555556 0.41666667 0.81355932 0.62500000
## 132 1.00000000 0.75000000 0.91525424 0.79166667
## 133 0.58333333 0.33333333 0.77966102 0.87500000
## 135 0.50000000 0.25000000 0.77966102 0.54166667
## 136 0.94444444 0.41666667 0.86440678 0.91666667
## 137 0.55555556 0.58333333 0.77966102 0.95833333
## 140 0.72222222 0.45833333 0.74576271 0.83333333
## 142 0.72222222 0.45833333 0.69491525 0.91666667
## 146 0.66666667 0.41666667 0.71186441 0.91666667
## 147 0.55555556 0.20833333 0.67796610 0.75000000
## 149 0.52777778 0.58333333 0.74576271 0.91666667
Create training labels
training_labels <- iris_norm[div == 1, 5]
print(training_labels)
## [1] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [5] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [9] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [13] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [17] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [21] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [25] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [29] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [33] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [37] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [41] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [45] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [49] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [53] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [57] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [61] Iris-versicolor Iris-versicolor Iris-virginica Iris-virginica
## [65] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [69] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [73] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [77] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [81] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [85] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [89] Iris-virginica Iris-virginica
## Levels: Iris-setosa Iris-versicolor Iris-virginica
Creating test labels
test_labels <- iris_norm[div == 2, 5]
print(test_labels)
## [1] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [5] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [9] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [13] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [17] Iris-setosa Iris-setosa Iris-versicolor Iris-versicolor
## [21] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [25] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [29] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [33] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [37] Iris-versicolor Iris-versicolor Iris-virginica Iris-virginica
## [41] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [45] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [49] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [53] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [57] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## Levels: Iris-setosa Iris-versicolor Iris-virginica
Install class package for K-means clustering algorithm
install.packages('class', repos="http://cran.us.r-project.org")
##
## The downloaded binary packages are in
## /var/folders/yq/f156071x165_9gyhs631wctr0000gn/T//RtmpcQ9Io1/downloaded_packages
library(class)
Build the model
iris_pred <- knn(train = training_set, test = test_set, cl = training_labels, k = 3)
Inspect predictions
print(iris_pred)
## [1] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [5] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [9] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [13] Iris-setosa Iris-setosa Iris-setosa Iris-setosa
## [17] Iris-setosa Iris-setosa Iris-versicolor Iris-versicolor
## [21] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [25] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [29] Iris-virginica Iris-versicolor Iris-versicolor Iris-versicolor
## [33] Iris-versicolor Iris-versicolor Iris-versicolor Iris-versicolor
## [37] Iris-versicolor Iris-versicolor Iris-virginica Iris-virginica
## [41] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [45] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## [49] Iris-virginica Iris-versicolor Iris-virginica Iris-virginica
## [53] Iris-versicolor Iris-virginica Iris-virginica Iris-virginica
## [57] Iris-virginica Iris-virginica Iris-virginica Iris-virginica
## Levels: Iris-setosa Iris-versicolor Iris-virginica
Merge predictions and observed values
merge <- data.frame(iris_pred, test_labels)
names(merge) <- c('Predicted values', 'Obeserved values')
Compare predictions to observed values
print(merge)
## Predicted values Obeserved values
## 1 Iris-setosa Iris-setosa
## 2 Iris-setosa Iris-setosa
## 3 Iris-setosa Iris-setosa
## 4 Iris-setosa Iris-setosa
## 5 Iris-setosa Iris-setosa
## 6 Iris-setosa Iris-setosa
## 7 Iris-setosa Iris-setosa
## 8 Iris-setosa Iris-setosa
## 9 Iris-setosa Iris-setosa
## 10 Iris-setosa Iris-setosa
## 11 Iris-setosa Iris-setosa
## 12 Iris-setosa Iris-setosa
## 13 Iris-setosa Iris-setosa
## 14 Iris-setosa Iris-setosa
## 15 Iris-setosa Iris-setosa
## 16 Iris-setosa Iris-setosa
## 17 Iris-setosa Iris-setosa
## 18 Iris-setosa Iris-setosa
## 19 Iris-versicolor Iris-versicolor
## 20 Iris-versicolor Iris-versicolor
## 21 Iris-versicolor Iris-versicolor
## 22 Iris-versicolor Iris-versicolor
## 23 Iris-versicolor Iris-versicolor
## 24 Iris-versicolor Iris-versicolor
## 25 Iris-versicolor Iris-versicolor
## 26 Iris-versicolor Iris-versicolor
## 27 Iris-versicolor Iris-versicolor
## 28 Iris-versicolor Iris-versicolor
## 29 Iris-virginica Iris-versicolor
## 30 Iris-versicolor Iris-versicolor
## 31 Iris-versicolor Iris-versicolor
## 32 Iris-versicolor Iris-versicolor
## 33 Iris-versicolor Iris-versicolor
## 34 Iris-versicolor Iris-versicolor
## 35 Iris-versicolor Iris-versicolor
## 36 Iris-versicolor Iris-versicolor
## 37 Iris-versicolor Iris-versicolor
## 38 Iris-versicolor Iris-versicolor
## 39 Iris-virginica Iris-virginica
## 40 Iris-virginica Iris-virginica
## 41 Iris-virginica Iris-virginica
## 42 Iris-virginica Iris-virginica
## 43 Iris-virginica Iris-virginica
## 44 Iris-virginica Iris-virginica
## 45 Iris-virginica Iris-virginica
## 46 Iris-virginica Iris-virginica
## 47 Iris-virginica Iris-virginica
## 48 Iris-virginica Iris-virginica
## 49 Iris-virginica Iris-virginica
## 50 Iris-versicolor Iris-virginica
## 51 Iris-virginica Iris-virginica
## 52 Iris-virginica Iris-virginica
## 53 Iris-versicolor Iris-virginica
## 54 Iris-virginica Iris-virginica
## 55 Iris-virginica Iris-virginica
## 56 Iris-virginica Iris-virginica
## 57 Iris-virginica Iris-virginica
## 58 Iris-virginica Iris-virginica
## 59 Iris-virginica Iris-virginica
## 60 Iris-virginica Iris-virginica
Analyze predictions
install.packages('gmodels', repos="http://cran.us.r-project.org")
##
## The downloaded binary packages are in
## /var/folders/yq/f156071x165_9gyhs631wctr0000gn/T//RtmpcQ9Io1/downloaded_packages
library(gmodels)
CrossTable(merge$`Predicted values`, merge$`Obeserved values`, prop.chisq = F)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 60
##
##
## | merge$`Obeserved values`
## merge$`Predicted values` | Iris-setosa | Iris-versicolor | Iris-virginica | Row Total |
## -------------------------|-----------------|-----------------|-----------------|-----------------|
## Iris-setosa | 18 | 0 | 0 | 18 |
## | 1.000 | 0.000 | 0.000 | 0.300 |
## | 1.000 | 0.000 | 0.000 | |
## | 0.300 | 0.000 | 0.000 | |
## -------------------------|-----------------|-----------------|-----------------|-----------------|
## Iris-versicolor | 0 | 19 | 2 | 21 |
## | 0.000 | 0.905 | 0.095 | 0.350 |
## | 0.000 | 0.950 | 0.091 | |
## | 0.000 | 0.317 | 0.033 | |
## -------------------------|-----------------|-----------------|-----------------|-----------------|
## Iris-virginica | 0 | 1 | 20 | 21 |
## | 0.000 | 0.048 | 0.952 | 0.350 |
## | 0.000 | 0.050 | 0.909 | |
## | 0.000 | 0.017 | 0.333 | |
## -------------------------|-----------------|-----------------|-----------------|-----------------|
## Column Total | 18 | 20 | 22 | 60 |
## | 0.300 | 0.333 | 0.367 | |
## -------------------------|-----------------|-----------------|-----------------|-----------------|
##
##