-
Notifications
You must be signed in to change notification settings - Fork 0
/
lda_credit_data.R
38 lines (30 loc) · 1.11 KB
/
lda_credit_data.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
# Leitura da base de dados
base = read.csv('credit_data.csv')
# Apaga a coluna clientid
base$clientid = NULL
# Valores inconsistentes
base$age = ifelse(base$age < 0, 40.92, base$age)
# Valores faltantes
base$age = ifelse(is.na(base$age), mean(base$age, na.rm = TRUE), base$age)
# Escalonamento
base[, 1:3] = scale(base[, 1:3])
# Encode da classe
base$default = factor(base$default, levels = c(0,1))
# Divis?o entre treinamento e teste
library(caTools)
set.seed(1)
divisao = sample.split(base$income, SplitRatio = 0.75)
base_treinamento = subset(base, divisao == TRUE)
base_teste = subset(base, divisao == FALSE)
library(MASS)
lda = lda(formula = default ~ ., data = base_treinamento)
base_treinamento = as.data.frame(predict(lda, base_treinamento))
base_treinamento = base_treinamento[c(4, 1)]
base_teste = as.data.frame(predict(lda, base_teste))
base_teste = base_teste[c(4, 1)]
library(e1071)
classificador = naiveBayes(x = base_treinamento[-2], y = base_treinamento$class)
previsoes = predict(classificador, newdata = base_teste[-2])
matriz_confusao = table(base_teste[, 2], previsoes)
confusionMatrix(matriz_confusao)
# 0.936