# -*- coding: utf-8 -*-
# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .r
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: R
#     language: R
#     name: ir
# ---

# # Churn Prediction
# ## SVM

# +
#install.packages("e1071")
# -

library(e1071)

df <- read.csv('evasao.csv')

# +
n <- nrow(df)
set.seed(42) # Se não fizer isso, verá valores diferentes dos meus
limite <- sample(1:n, size = round(0.75*n), replace = FALSE)
train_df <- df[limite,]
test_df <- df[-limite,]


# -

abandonou = train_df$abandonou
periodo = train_df$periodo 
bolsa = train_df$bolsa 
repetiu =  train_df$repetiu
ematraso = train_df$ematraso 
disciplinas = train_df$disciplinas 
faltas = train_df$faltas
desempenho = train_df$desempenho
modelo_svm <- svm(abandonou ~ periodo + bolsa + repetiu + ematraso + disciplinas + faltas + desempenho , train_df,
                  kernel = 'polynomial', gamma = 10, cost = 2, type='C-classification')

summary(modelo_svm)

# +
abandonou = test_df$abandonou
periodo = test_df$periodo 
bolsa = test_df$bolsa 
repetiu =  test_df$repetiu
ematraso = test_df$ematraso 
disciplinas = test_df$disciplinas 
faltas = test_df$faltas
desempenho = test_df$desempenho

predicoes <- predict(modelo_svm, test_df)
# -

head(predicoes)

df_predicao <- data.frame(desempenho = test_df$desempenho, 
                          repetiu = test_df$repetiu, 
                          abandonou_obs = test_df$abandonou, 
                          abandonou_pred = predicoes)

head(df_predicao)

erros <- test_df$abandonou != predicoes
qtdErros <- sum(erros)
percErros <- qtdErros / length(test_df$abandonou)
acuracia <- (1 - percErros) * 100
acuracia



StarcoderdataJupyterScriptsDedupFiltered