-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnaive_bayes - Copia.R
73 lines (55 loc) · 1.74 KB
/
naive_bayes - Copia.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# implementando o modelo naive bayes na unha ---------------------------------
# Jonatas Silva do Espirito Santo
cria_df_treino<-function(a){
num_linhas = as.numeric(unlist(strsplit(a[1],split=" ")))
guarda_dados = as.numeric(unlist(strsplit(a[2],split=" ")))
for (i in 3:(num_linhas[1]+1-num_linhas[1])){
dados_temp = as.numeric(unlist(strsplit(a[i],split=" ")))
guarda_dados = rbind(guarda_dados, dados_temp)
}
guarda_dados
}
cria_df_treino<-function(a){
num_linhas = as.numeric(unlist(strsplit(a[1],split=" ")))
guarda_dados = as.numeric(unlist(strsplit(a[num_linhas[1]+1],split=" ")))
guarda_dados
}
cria_treino<-function(){
dados = readLines("stdin",n=-1, warn=FALSE);
df_treino = cria_df(dados)
instancias_treino = 1:(dim(df_treino)[1] - 1)
treino = df[instancias_treino,]
return(treino)
}
cria_teste<-function(){
dados = readLines("stdin",n=-1, warn=FALSE);
df_teste = cria_df(dados)
teste = df[dim(df_teste)[1],]
return(teste)
}
naive_bayes <- function(){
#carregando os dataset
treino <- cria_treino()
teste <- cria_teste()
#guardando o número de variávéis preditoras + resposta
nvar <- dim(treino)[2]
#calculando as probabilidades a priores
prob_pri <- prop.table(table(treino[[nvar]]))
#Calculando as probabilidades condicionais
tab_cond <- NULL
prob_cond <- NULL
for(i in 1:(nvar-1)){
tab_cond[[i]] <- table(treino[[i]],treino[[nvar]])
prob_cond[[i]] <- prop.table(tab_cond[[i]],2)
}
#predizendo as classes do dataset teste
verossimilhanca <- c(1,1)
for(j in 1:(nvar-1)){
verossimilhanca <- verossimilhanca*prob_cond[[j]][teste[,j],]
}
predicao <- prob_pri * verossimilhanca
prob_predicao <- prop.table(predicao)
max_prob_predicao <- max(prob_predicao)
return(max_prob_predicao)
}
naive_bayes()