How to set the factor of true classifications of training set of the knn test on a given learning set to predict class of the data?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

How to set the factor of true classifications of training set of the knn test on a given learning set to predict class of the data?

AntoineN
Hello ! I am new to R (but not to data analysis which I studied in lectures) and I have some issues to understand knn function.

From the well-known dataset iris I want to predict the species of flowers given a the length of their sepals and petals and their width.

The data frame looks like :



I tried to do :

library(class)

data <- iris

normalize <- function(x){
  return ((x-min(x))/(max(x)-min(x)))
}

iris_n <- as.data.frame(lapply(data[,c(1,2,3,4)],normalize))

iris_train <- c(iris_n[1:40, ],iris_n[51:90, ],iris_n[101:140, ])

iris_test <- c(iris_n[41:50,],iris_n[91:100,],iris_n[141:150,])

iris_train_target <- c(data[1:40,5],data[51:90,5],data[101:140,5])
iris_test_target <-c(data[41:50,5],data[91:100,5],data[141:150,5])


m1 <- knn(train = iris_train, test = iris_test, cl = iris_train_target,k=13)
table(iris_test_target, m1)


Yet, it answers me that the training set hasn't the same size than the class. (Why is it necessary to do so ?)
Indeed :

> length(iris_train)
[1] 12
> length(iris_train_target)
[1] 120



Here is what is within iris_train :

> iris_train
$Sepal.Length
 [1] 0.22222222 0.16666667 0.11111111 0.08333333 0.19444444 0.30555556 0.08333333 0.19444444
 [9] 0.02777778 0.16666667 0.30555556 0.13888889 0.13888889 0.00000000 0.41666667 0.38888889
[17] 0.30555556 0.22222222 0.38888889 0.22222222 0.30555556 0.22222222 0.08333333 0.22222222
[25] 0.13888889 0.19444444 0.19444444 0.25000000 0.25000000 0.11111111 0.13888889 0.30555556
[33] 0.25000000 0.33333333 0.16666667 0.19444444 0.33333333 0.16666667 0.02777778 0.22222222

$Sepal.Width
 [1] 0.6250000 0.4166667 0.5000000 0.4583333 0.6666667 0.7916667 0.5833333 0.5833333 0.3750000
[10] 0.4583333 0.7083333 0.5833333 0.4166667 0.4166667 0.8333333 1.0000000 0.7916667 0.6250000
[19] 0.7500000 0.7500000 0.5833333 0.7083333 0.6666667 0.5416667 0.5833333 0.4166667 0.5833333
[28] 0.6250000 0.5833333 0.5000000 0.4583333 0.5833333 0.8750000 0.9166667 0.4583333 0.5000000
[37] 0.6250000 0.6666667 0.4166667 0.5833333

$Petal.Length
 [1] 0.06779661 0.06779661 0.05084746 0.08474576 0.06779661 0.11864407 0.06779661 0.08474576
 [9] 0.06779661 0.08474576 0.08474576 0.10169492 0.06779661 0.01694915 0.03389831 0.08474576
[17] 0.05084746 0.06779661 0.11864407 0.08474576 0.11864407 0.08474576 0.00000000 0.11864407
[25] 0.15254237 0.10169492 0.10169492 0.08474576 0.06779661 0.10169492 0.10169492 0.08474576
[33] 0.08474576 0.06779661 0.08474576 0.03389831 0.05084746 0.06779661 0.05084746 0.08474576

$Petal.Width
 [1] 0.04166667 0.04166667 0.04166667 0.04166667 0.04166667 0.12500000 0.08333333 0.04166667
 [9] 0.04166667 0.00000000 0.04166667 0.04166667 0.00000000 0.00000000 0.04166667 0.12500000
[17] 0.12500000 0.08333333 0.08333333 0.08333333 0.04166667 0.12500000 0.04166667 0.16666667
[25] 0.04166667 0.04166667 0.12500000 0.04166667 0.04166667 0.04166667 0.04166667 0.12500000
[33] 0.00000000 0.04166667 0.04166667 0.04166667 0.04166667 0.00000000 0.04166667 0.04166667

$Sepal.Length
 [1] 0.7500000 0.5833333 0.7222222 0.3333333 0.6111111 0.3888889 0.5555556 0.1666667 0.6388889
[10] 0.2500000 0.1944444 0.4444444 0.4722222 0.5000000 0.3611111 0.6666667 0.3611111 0.4166667
[19] 0.5277778 0.3611111 0.4444444 0.5000000 0.5555556 0.5000000 0.5833333 0.6388889 0.6944444
[28] 0.6666667 0.4722222 0.3888889 0.3333333 0.3333333 0.4166667 0.4722222 0.3055556 0.4722222
[37] 0.6666667 0.5555556 0.3611111 0.3333333

$Sepal.Width
 [1] 0.50000000 0.50000000 0.45833333 0.12500000 0.33333333 0.33333333 0.54166667 0.16666667
 [9] 0.37500000 0.29166667 0.00000000 0.41666667 0.08333333 0.37500000 0.37500000 0.45833333
[17] 0.41666667 0.29166667 0.08333333 0.20833333 0.50000000 0.33333333 0.20833333 0.33333333
[25] 0.37500000 0.41666667 0.33333333 0.41666667 0.37500000 0.25000000 0.16666667 0.16666667
[33] 0.29166667 0.29166667 0.41666667 0.58333333 0.45833333 0.12500000 0.41666667 0.20833333

$Petal.Length
 [1] 0.6271186 0.5932203 0.6610169 0.5084746 0.6101695 0.5932203 0.6271186 0.3898305 0.6101695
[10] 0.4915254 0.4237288 0.5423729 0.5084746 0.6271186 0.4406780 0.5762712 0.5932203 0.5254237
[19] 0.5932203 0.4915254 0.6440678 0.5084746 0.6610169 0.6271186 0.5593220 0.5762712 0.6440678
[28] 0.6779661 0.5932203 0.4237288 0.4745763 0.4576271 0.4915254 0.6949153 0.5932203 0.5932203
[37] 0.6271186 0.5762712 0.5254237 0.5084746

$Petal.Width
 [1] 0.5416667 0.5833333 0.5833333 0.5000000 0.5833333 0.5000000 0.6250000 0.3750000 0.5000000
[10] 0.5416667 0.3750000 0.5833333 0.3750000 0.5416667 0.5000000 0.5416667 0.5833333 0.3750000
[19] 0.5833333 0.4166667 0.7083333 0.5000000 0.5833333 0.4583333 0.5000000 0.5416667 0.5416667
[28] 0.6666667 0.5833333 0.3750000 0.4166667 0.3750000 0.4583333 0.6250000 0.5833333 0.6250000
[37] 0.5833333 0.5000000 0.5000000 0.5000000

$Sepal.Length
 [1] 0.5555556 0.4166667 0.7777778 0.5555556 0.6111111 0.9166667 0.1666667 0.8333333 0.6666667
[10] 0.8055556 0.6111111 0.5833333 0.6944444 0.3888889 0.4166667 0.5833333 0.6111111 0.9444444
[19] 0.9444444 0.4722222 0.7222222 0.3611111 0.9444444 0.5555556 0.6666667 0.8055556 0.5277778
[28] 0.5000000 0.5833333 0.8055556 0.8611111 1.0000000 0.5833333 0.5555556 0.5000000 0.9444444
[37] 0.5555556 0.5833333 0.4722222 0.7222222

$Sepal.Width
 [1] 0.54166667 0.29166667 0.41666667 0.37500000 0.41666667 0.41666667 0.20833333 0.37500000
 [9] 0.20833333 0.66666667 0.50000000 0.29166667 0.41666667 0.20833333 0.33333333 0.50000000
[17] 0.41666667 0.75000000 0.25000000 0.08333333 0.50000000 0.33333333 0.33333333 0.29166667
[25] 0.54166667 0.50000000 0.33333333 0.41666667 0.33333333 0.41666667 0.33333333 0.75000000
[33] 0.33333333 0.33333333 0.25000000 0.41666667 0.58333333 0.45833333 0.41666667 0.45833333

$Petal.Length
 [1] 0.8474576 0.6949153 0.8305085 0.7796610 0.8135593 0.9491525 0.5932203 0.8983051 0.8135593
[10] 0.8644068 0.6949153 0.7288136 0.7627119 0.6779661 0.6949153 0.7288136 0.7627119 0.9661017
[19] 1.0000000 0.6779661 0.7966102 0.6610169 0.9661017 0.6610169 0.7966102 0.8474576 0.6440678
[28] 0.6610169 0.7796610 0.8135593 0.8644068 0.9152542 0.7796610 0.6949153 0.7796610 0.8644068
[37] 0.7796610 0.7627119 0.6440678 0.7457627

$Petal.Width
 [1] 1.0000000 0.7500000 0.8333333 0.7083333 0.8750000 0.8333333 0.6666667 0.7083333 0.7083333
[10] 1.0000000 0.7916667 0.7500000 0.8333333 0.7916667 0.9583333 0.9166667 0.7083333 0.8750000
[19] 0.9166667 0.5833333 0.9166667 0.7916667 0.7916667 0.7083333 0.8333333 0.7083333 0.7083333
[28] 0.7083333 0.8333333 0.6250000 0.7500000 0.7916667 0.8750000 0.5833333 0.5416667 0.9166667
[37] 0.9583333 0.7083333 0.7083333 0.8333333


And in iris_train_target

> iris_train_target
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2
 [45] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
 [89] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3


Therefore how can I apply a knn test, and more specifical how to specify the class, on a given learning set to predict class of the data ?