1+ #Importando as bibliotecas responsáveis pelo Machine Learning
2+ from sklearn .linear_model import LogisticRegression
3+ from sklearn .model_selection import train_test_split
4+ from sklearn .dummy import DummyClassifier
5+ from sklearn .metrics import accuracy_score
6+ from sklearn .tree import DecisionTreeClassifier
7+ from sklearn .ensemble import RandomForestClassifier
8+
9+ #Selecionando do nosso conjunto de dados tudo o que for float
10+ x = merge_dados .select_dtypes ('float64' )
11+ #Selecionando o nosso target, o resultado de acordo com os nossos dados
12+ y = merge_dados ['ativo_moa' ]
13+
14+ #Pega os dados que são treinados, usando 20%
15+ x_treino , x_teste , y_treino , y_teste = train_test_split (x , y , test_size = 0.2 , stratify = y )
16+
17+ #Treinando nossa máquina de acordo com os nossos dados, usando Regressão Logística
18+ modelo_rlog = LogisticRegression (max_iter = 1000 )
19+ modelo_rlog .fit (x_treino , y_treino )
20+ modelo_rlog .score (x_teste , y_teste )
21+
22+ #Modelo para avaliar a frequência que ocorreu os valores, usando um método mais simples
23+ modelo_dummy = DummyClassifier ('most_frequent' )
24+ modelo_dummy .fit (x_treino , y_treino )
25+ previsao_dummy = modelo_dummy .predict (x_teste )
26+ accuracy_score (y_teste , previsao_dummy )
27+
28+ #Árvore de Decisão, com um certo tamanho de nós
29+ teste = []
30+ treino = []
31+ for i in range (1 , 15 ):
32+ modelo_arv = DecisionTreeClassifier (max_depth = i )
33+ modelo_arv .fit (x_treino , y_treino )
34+ teste .append (modelo_arv .score (x_teste , y_teste ))
35+ treino .append (modelo_arv .score (x_treino , y_treino ))
36+
37+ #Plotando um gráfico para exemplificar o resultado
38+ sns .lineplot (x = range (1 , 15 ), y = teste , label = 'teste' )
39+ sns .lineplot (x = range (1 , 15 ), y = treino , label = 'treino' )
40+
41+ x = merge_dados .drop (['id' , 'n_moa' , 'ativo_moa' , 'droga' ], axis = 1 )
42+ x = pd .get_dummies (x , columns = ['tratamento' , 'tempo' , 'dose' ])
43+ y = merge_dados ['ativo_moa' ]
44+ x_treino , x_teste , y_treino , y_teste = train_test_split (x , y , test_size = 0.2 , stratify = y , random_state = 376 )
45+ modelo_ranForest = RandomForestClassifier ()
46+ modelo_ranForest .fit (x_treino , y_treino )
47+ modelo_ranForest .score (x_teste , y_teste )
48+
49+ #Desafio 01 - Utilizando o método dos vizinhos
50+ from sklearn .neighbors import KNeighborsClassifier
51+
52+ num_neigh = 3
53+
54+ neigh_fun = KNeighborsClassifier (num_neigh )
55+ neigh_fun .fit (x_treino , y_treino )
56+ neigh_fun .score (x_teste , y_teste )
57+
58+ #Desafio 04 - Testando outros problemas
59+ x = merge_dados .loc [:, 'g-0' :'c-99' ]
60+ y = merge_dados ['tempo' ].map ({24 :0 , 48 :1 , 72 :2 })
61+
62+ x_treino , x_teste , y_treino , y_teste = train_test_split (x , y , test_size = 0.2 , stratify = y , random_state = 376 )
63+
64+ modelo_rlog2 = LogisticRegression (solver = 'newton-cg' )
65+ modelo_rlog2 .fit (x_treino , y_treino )
66+ modelo_rlog2 .score (x_teste , y_teste )
67+
68+ #Desafio 05 - Testes com a droga mais utilizada
69+ merge_dados ['droga' ].value_counts () #Para achar os compostos que mais aparecem
70+
71+ #As duas drogas possuem um valor muito parecido, por isso é mais fácil de
72+ #chegar num resultado favorável
73+ dt_temp = merge_dados .query ('droga in ["8b87a7a83", "5628cb3ee"]' )
74+
75+ x = dt_temp .loc [:, 'g-0' :'g-12' ]
76+ y = dt_temp ['droga' ].map ({'8b87a7a83' :0 , '5628cb3ee' :1 })
77+ sns .countplot (x = y )
78+ y .value_counts (normalize = True ) #Porcentagem muito parecida
79+
80+ x_treino , x_teste , y_treino , y_teste = train_test_split (x , y , test_size = 0.2 , stratify = y ,random_state = 376 )
81+
82+ #Aqui modificamos o x. Se colocamos mais colunas de g e c o algoritmo consegue
83+ #100% de taxa de acerto. A diferença da ativação entre as duas drogas é muito
84+ #grande e fácil do algoritmo identificar.
85+ modelo_rlog3 = LogisticRegression ()
86+ modelo_rlog3 .fit (x_treino , y_treino )
87+ modelo_rlog3 .score (x_teste , y_teste )
0 commit comments