-
Notifications
You must be signed in to change notification settings - Fork 0
/
SVM-reducido.R
53 lines (40 loc) · 2.01 KB
/
SVM-reducido.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
44
45
46
47
48
49
50
51
52
#Support Vector Machine con datos reducidos
library(e1071)
library(ggplot2)
#Leo el training set
train <- read.table("/home/luciakasman/Documentos/Aprendizaje Estadístico/TpFinal/UCI HAR Dataset/UCI HAR Dataset/train/X_train_pca.txt", header = TRUE)
labels.train <- read.table("/home/luciakasman/Documentos/Aprendizaje Estadístico/TpFinal/UCI HAR Dataset/UCI HAR Dataset/train/y_train.txt")
#Reduzco los datos según los resultados de aplicar PCA
train <- train[,1:105]
train_set <- data.frame(cbind(labels.train, train))
#Leo el testing set
test <- read.table("/home/luciakasman/Documentos/Aprendizaje Estadístico/TpFinal/UCI HAR Dataset/UCI HAR Dataset/test/X_test_pca.txt", header = TRUE)
labels.test <- read.table("/home/luciakasman/Documentos/Aprendizaje Estadístico/TpFinal/UCI HAR Dataset/UCI HAR Dataset/test/y_test.txt")
#Reduzco los datos según los resultados de aplicar PCA
test <- test[,1:105]
test_set <- data.frame(cbind(labels.test, test))
#Mezclo aleatoriamente las filas, porque el dataset dado está bastante ordenado
set.seed(452)
train_set <- train_set[sample(nrow(train_set)),]
test_set <- test_set[sample(nrow(test_set)),]
svm_model<- svm(train_set$V1~., data=train_set, cost=10,scale = FALSE, type="C-classification")
summary(svm_model)
#Se usan 1607 support vectors.
#Ahora predigo con el mejor modelo
test <- test_set[,-1]
Y2 <- test_set[,1]
datos_ajustados <- predict(svm_model,test)
confusion_matrix_red = as.data.frame(table(datos_ajustados, Y2))
#La exactitud es: (482+417+381+385+465+537)/2947 = 0,9049881
ggplot(data = confusion_matrix_red,
mapping = aes(x = datos_ajustados,
y = Y2)) +
geom_tile(aes(fill = Freq)) +
geom_text(aes(label = sprintf("%1.0f", Freq)), vjust = 1) +
scale_fill_gradient(low = "yellow",
high = "red",
trans = "log") +
xlab("Valores Predichos") +
ylab("Valores Reales") +
ggtitle("MC para SVM con features reducidos")
#No se puede aplicar Cross Validation por falta de memoria en la computadora.