-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkknn.R
43 lines (35 loc) · 1.18 KB
/
kknn.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Install packages
install.packages('kknn')
# Load libraries
library(kknn)
setwd('C:\\Users\\BlueMoon\\Documents\\GitHub\\kdd')
# Load CSV
data.train = read.csv('training.csv', TRUE, ';')
data.test = read.csv('test.csv', TRUE, ';')
#data.status <- as.factor(data.train$STATUS)
#data.train$STATUS <- NULL
data.test$STATUS <- array(0,50)
# weighted kNN
# method 1
res <- kknn(STATUS~., data.train, data.test)
#table(data.test$STATUS, res$fit)
#kknn.dist(learn, valid, k = 10, distance = 2)
# method 2
fit.kknn <- kknn(STATUS ~ ., data.train, data.test)
#table(data.test$STATUS, fit.kknn$fit)
fit.train1 <- train.kknn(STATUS ~ ., data.train, kmax = 15,
kernel = c("triangular", "rectangular", "epanechnikov", "optimal"),
distance = 1)
#table(predict(fit.train1, data.test), data.test$STATUS)
res$fit <- predict(fit.train1, data.test)
# move from regression to classification
predictions <- array(0,50)
for(i in 1:length(predictions)) {
predictions[i] <- ifelse(res$fit[i]>0,1,-1)
}
out <- "results.csv"
if (file.exists(out)) file.remove(out)
write("Id,STATUS", file = out, append=TRUE)
for(i in 1:length(predictions)) {
write(paste(i, predictions[i], sep = ","), file = out, append=TRUE)
}