-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoupa_tempo.html
471 lines (334 loc) · 21.4 KB
/
poupa_tempo.html
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="utf-8">
<title>Projetos-Ricardo Felippe </title>
<link rel="shortcut icon" href="https://ricardofelippe.github.io/images/favicon.ico">
<meta name="description" content="">
<meta name="author" content="Ricardo Felippe">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="https://ricardofelippe.github.io/theme/html5.js"></script>
<![endif]-->
<!-- <link href="https://ricardofelippe.github.io/theme/css/ipython.css" rel="stylesheet"> -->
<!--<link href="https://ricardofelippe.github.io/theme/css/font-awesome.min.css" rel="stylesheet">-->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://ricardofelippe.github.io/theme/css/bootstrap.min.css" rel="stylesheet">
<link href="https://ricardofelippe.github.io/theme/css/local.css" rel="stylesheet">
<link href="https://ricardofelippe.github.io/theme/css/pygments.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});
</script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-4510606-3', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default" style="margin-top:2em;">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://ricardofelippe.github.io/index.html">Ricardo Felippe</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="https://ricardofelippe.github.io/index.html"><i class="fa fa-home"></i> Home</a></li>
<li><a href="https://ricardofelippe.github.io/poupa_tempo.html"><i class="fa fa-clock-o "></i> Poupa tempo</a></li>
<li><a href="https://ricardofelippe.github.io/Projetos-Ricardo Felippe.html"><i class="fa fa-university "></i> Aprender</a></li>
<li><a href="https://ricardofelippe.github.io/programAki.html"><i class="fa fa-code" aria-hidden="true"></i> ProgramAki</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="https://ricardofelippe.github.io/profissional.html"><i class="fa fa-building" aria-hidden="true"></i> Profissional</a>
<!--
<li><a href="https://ricardofelippe.github.io/feeds/rss.xml"><i class="fa fa-rss"></i> RSS</a></li>
-->
</ul>
</div>
</div>
</nav>
</div>
<div class="container">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse_d3"><h4><i class="fa fa-clock-o "></i> Passo-a-Passo</a></h4></a>
</h4>
</div>
<div id="collapse_d3" class="panel-collapse collapse">
<div class="panel-body">
<p>Orientação para acessar os pacotes Python de carregamento dos dados de CNPJ públicos que a Receita Federal disponibiliza.</p>
<ol>
<li>Localize a pasta denominada:DadosPublicosCnpj (na ocasião esta pasta se localizava em: "C:\Users\ricardo.ramos\OneDrive - Ministerio do Desenvolvimento da Industria e Comercio Exterior\R-projects\DAMPE-SEMPE\DadosPublicosCnpj\Python\CNPJ-full"</li>
<li>Acessar prompt de comand</li>
<li>Usar comand cd para acessar a pasta com os arquivos Python. Por exemplo: "cd "C:\Users\ricardo.ramos\OneDrive - Ministerio do Desenvolvimento da Industria e Comercio Exterior\R-projects\DAMPE-SEMPE\DadosPublicosCnpj\Python\CNPJ-full"</li>
</ol>
<hr>
<p>Orientação para acessar o MySql do meu PC via comando prompt </p>
<ol>
<li>Verificar onde se encontra o binário(bin) no PC e entrar na pasta via comando cd.
No caso do computador atual em uso, o Caminho do executável é: C:\Program Files\MySQL\MySQL Server 8.0\bin </li>
<li>Econtrada e acessada a pasta, digite : mysql -u root -p</li>
<li>A senha no momento é: 009763</li>
<p> Os comandos gerados via prompt serão refletidos no MySql Workbench</p>
<p> Outra maneira para ativar o MYSQL80 é acessar aplicativo "Executar" e digitar "serviços". Encontrar o MYSQL80 e iniciá-lo. </p>
</ol>
<hr>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#customizando_R"><h4><i class="fa fa-clock-o "></i> Customizando o R</a></h4></a>
</h4>
</div>
<div id="customizando_R" class="panel-collapse collapse">
<div class="panel-body">
<li><a href="https://mdic-my.sharepoint.com/:b:/g/personal/ricardo_ramos_mdic_gov_br/EVrD9SHXfOlMvEJNKAm0vmgBRLN_Y1z-8mPIQXDBHpgjCw?e=bXf2e1">R+ data.table : Sheet </a></li>
<hr>
<li>Computar o total de linhas de um bigfile</li>
<ol>
<li><code>length(count.fields("train.csv", sep = ",")) -1</code> </li>
</ol>
<hr>
<li>Cálculo do Coeficiente de correlação com dataset contendo valores NA ?</li>
<ol>
<li><code>cor(x, y, method = "pearson", use = "complete.obs")</code> </li>
</ol>
<hr>
<li>Segmentação/tabela de dados com split? </li>
<ol>
<li>Usando o dataset iris, podemos escolher a espécie setosa da coluna species e só analisar o atributo Sepal.Width com o comando<code>table(split(iris,iris$Species)$setosa$Sepal.Width)</code> </li>
</ol>
<hr>
<li>Usar gráfico interativo para explorar dataset? </li>
<ol>
<li>Usar o comando <code>library(openintro)</code> conjugado com comando <code>edaPlot(dataset)</code> </li>
</ol>
<hr>
<li>Como instalar o pacote data.cube ? </li>
<ol>
<li><a href="https://api.github.com/repos/jangorecki/data.cube/tarball/master">Salvar o pacote direto na pasta C:\Program Files\R\R-3.6.1\library </a></li>
<li>Fixar a pasta library e usar o <code>comando:install.packages("jangorecki-data.cube-v0.2-102-gc8622b1.tar.gz", repos = NULL, type="source") </code></li>
</ol>
<hr>
<li>código para separador de milhar no R </li>
<ol>
<li><a href=""><code>formatado<- function(x )format(sum(x), big.mark=".", scientific=FALSE) </code> </a></li>
</ol>
<hr>
<li>Debugar o R </li>
<ol>
<li><a href="https://www.youtube.com/watch?v=M5n_2jmdJ_8">YouTube - stop() - breathe - recover()</a></li>
<li>editar o options: options(error = recover)</li>
<li>Iniciar a procura do erro de baixo para cima. Procurar pela linha que mais se parece com o código problema que se quer analisar.</li>
<li>Escolhendo a linha, o sistema abre o lócus de todas as variáveis da função alvo.</li>
<li>Com a função ls() encontro todas as variáveis no environment da função alvo.</li>
<li>Se digitar data, encontro os dados que estão sendo analisados.</li>
<li><strong>Dica</strong>Chamar funções que estão localizadas no lócus de uma função recuperada pela opção options, pode ser diferente do global environment</li>
<li> Resetar o options: options(erro = NULL) </li>
</ol>
<hr>
<li>Atualizar o Rtools </li>
<ol>
<li><a href="https://cran.r-project.org/bin/windows/Rtools/">Acessar o CRAN</a></li>
<li>Acessar Download R for Windows</li>
<li>Baixar o Rtools no C</li>
<li>Configurar a variável de ambiente para a pasta bin do Rtools. (C:\Rtools\bin)</li>
<li>Usar o comando pkgbuild::find_rtools(debug = TRUE)</li>
</ol>
<hr>
<li>Orientação para instalar o ggflags </li>
<ol>
<li>Baixar o pacote no endereço: https://codeload.github.com/rensa/ggflags/legacy.tar.gz/master</li>
<p> Caso não mais disponível, o pacote se encontra na pasta atual lib na pasta do R(28/09/2019) </p>
<li>Descompactar. Entrar na pasta e abrir o ggflags.Rproj</li>
<li>O projeto abre. Na aba Build, solicitar a instalação. Verificar se há pacotes faltantes. Caso sim, basta instalá-los.</li>
</ol>
<hr>
<li>Usar List Comprehensions in R?</li>
<i class="fa fa-external-link" aria-hidden="true"></i><a href="https://cran.r-project.org/web/packages/comprehenr/vignettes/Introduction.html">List Comprehensions</a>
<hr>
<li>Orientação para gerar um gráfico no R que reflita as correlações entre as variáveis no meu dataframe</li>
<p>
Usar os comandos:
<pre>
```{r}
numeric.var <- sapply(churn, is.numeric)
corr.matrix <- cor(churn[,numeric.var])
corrplot(corr.matrix, main="\n\nGráfico de Correlação para Variáveis Numéricas", method="number")
```
</pre>
</p>
<hr>
<li>Orientação para obter apenas as colunas numéricas do dataframe no R e filtrar essa colunas</li>
<p>
Usar os comandos:
<pre>
```
# Obtendo apenas as colunas numéricas
colunas_numericas <- sapply(df, is.numeric)
colunas_numericas
# Filtrando as colunas numéricas para correlação
data_cor <- cor(df[,colunas_numericas])
data_cor
head(data_cor)
```
</pre>
</p>
<li>Orientação para gerar um gráfico no R que reflita as correlações entre as variáveis no meu dataframe.</li>
<p>
Usar os comandos:
<pre>
```{r}
numeric.var <- sapply(churn, is.numeric)
corr.matrix <- cor(churn[,numeric.var])
corrplot(corr.matrix, main="\n\nGráfico de Correlação para Variáveis Numéricas", method="number")
```
</pre>
</p>
<hr>
<li>Orientação para obter apenas as colunas numéricas do dataframe no R e filtrar essa colunas</li>
<p>
Usar os comandos:
<pre>
```
# Obtendo apenas as colunas numéricas
colunas_numericas <- sapply(df, is.numeric)
colunas_numericas
# Filtrando as colunas numéricas para correlação
data_cor <- cor(df[,colunas_numericas])
data_cor
head(data_cor)
```
</pre>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#dicasDSA"><h4><i class="fa fa-clock-o "></i> # Dicas DSA</a></h4></a>
</h4>
</div>
<div id="dicasDSA" class="panel-collapse collapse">
<div class="panel-body">
https://mobaxterm.mobatek.net/
<li><a href="https://mobaxterm.mobatek.net/">Computação Remota: Mobaxterm</a></li>
<pre>
O MobaXterm é uma caixa de ferramentas para computação remota. Em um único aplicativo Windows, ele fornece várias funções personalizadas para programadores, webmasters, administradores de TI e praticamente todos os usuários que precisam lidar com conexões remotas de maneira mais simples.
MobaXterm fornece todas as importantes ferramentas de rede remota (SSH, X11, RDP, VNC, FTP, MOSH, ...) e comandos Unix (bash, ls, cat, sed, grep, awk, rsync, ...) na área de trabalho do Windows , em um único arquivo exe portátil que funciona imediatamente.
Se você é usuário Windows, acesse o site abaixo, faça o download e experimente o Moba:
</pre>
<li>como entregar o resultado do seu modelo preditivo ao cliente</li>
<pre>
```
A decisão sobre como entregar o resultado ao cliente passa pelo que foi acordado com o cliente no começo do projeto. Como o cliente vai usar o resultado do seu trabalho? Essa pergunta foi respondida quando o projeto começou?
Alguns cenários:
Cenário 1: O cliente não tem qualquer experiência com Machine Learning, não tem equipe, não tem infraestrutura e não tem orçamento.
Nesse caso, podemos acordar com o cliente de entregar as previsões do modelo em um simples arquivo csv. Agendamos o modelo para ser executado todos os dias à noite, alimentamos com os novos dados, geramos as previsões e gravamos em um arquivo. Um script Python ou R dá conta do recado aqui. Alguém no lado do cliente pega o csv e alimenta o Power BI ou qualquer outra ferramenta e gera o gráfico com as previsões. Cliente feliz, próximo projeto.
Cenário 2: O cliente quer algo mais automatizado!
Repetimos o que foi feito no cenário 1, mas automatizamos todo o processo com um Robô RPA, que coleta os dados da fonte, aplica um script de preparação dos dados, alimenta e executa o modelo treinado, coleta o csv com as previsões e alimenta uma ferramenta de geração de gráficos. Há o custo de aquisição da ferramenta RPA para criação do Robô. Tudo isso pode ser feito praticamente sem interação humana. Cliente feliz, próximo projeto.
Cenário 3: O cliente quer as previsões em uma planilha Excel no e-mail dos gerentes todos os dias pela manhã.
Repetimos o que foi feito no cenário 2, mas configuramos o Robô RPA para gerar a planilha e enviar por e-mail. Há outra forma de automatizar esse processo? Com certeza, usando programação. Mas RPA requer programação zero e com poucos cliques o Robô estará atendendo seu propósito, gerando logs de execução e sendo executado 24/7. O cliente não precisa pagar FGTS ao Robô, o Robô não tira férias, não fica doente, não leva atestado médico, não pede aumento e não fica navegando pelo Facebook enquanto o trabalho está pendente. Cliente feliz, próximo projeto.
Cenário 4: O cliente tem infraestrutura local e equipe preparada e capacitada para manipular dados.
Podemos entregar o modelo como um container Docker que pode ser incorporado à infra do cliente. O container Docker funcionaria como um Microsserviço. O cliente precisa ter alguém de DevOps para operacionalizar a execução do container. Cliente feliz, próximo projeto.
Cenário 5: O cliente não tem infraestrutura local e muito menos equipe preparada e capacitada para manipular dados.
Podemos publicar o modelo em nuvem AWS ou Azure. O consultor contrata o serviço em nuvem e cobra o custo do cliente, obviamente. O modelo pode ser entregue como uma API, por exemplo. Cliente feliz, próximo projeto.
Cenário 6: O cliente que receber um Dashboard pronto e não quer ter qualquer trabalho.
Podemos contratar o serviço do Power BI ou mesmo do Shiny para linguagem R e o consultor realiza todo o processo, disponibilizando e mantendo o Dashboard para o cliente. O consultor paga pela licença do software e cobra do cliente como custo total do projeto. Cliente feliz, próximo projeto.
Cenário 7: O cliente quer uma aplicação web onde possa fazer as previsões em tempo real.
Podemos serializar o modelo treinado e alimentar uma aplicação web (como é mostrado no curso de Machine Learning). Alguém precisa desenvolver a interface web que vai chamar o modelo e passar os dados via formulário, por exemplo! Quem vai desenvolver a interface web? Isso precisa ser definido no início do projeto e as expectativas alinhadas! Ou então, o cliente não vai ficar feliz! A aplicação web poderia ser um sistema de recomendação com base no modelo preditivo.
Cenário 8: O cliente quer o Pipeline completo internamente.
Construímos o Pipeline de dados, desde a captura e tratamento dos dados usando Kafka por exemplo, passando pela gravação em um Data Lake, até alimentar o modelo de Machine Learning. Entregamos o modelo fazendo previsões como um container Docker. Se vários modelos devem ser oferecidos, usamos Kubernetes para orquestração dos containers. Se o modelo deve ser reconstruído frequentemente por conta de novos dados coletados, trazemos o Spark para a conversa. Como sempre, tudo depende do que foi acordado com o cliente!
Cenário 9: O cliente quer uma app para smartphone.
Ok. Criamos o modelo usando tecnologias que permitam manter o modelo com o menor tamanho possível e incluímos em nossa app. Mas alguém tem que desenvolver a app para iOS e Android. Isso faz parte do custo total do projeto.
Cenário 10: O cliente não sabe o que quer.
Cabe ao consultor compreender as necessidades do cliente e sugerir um dos itens descritos acima ou mesmo encontrar outra alternativa. Esse trabalho adicional de consultoria deve ser cobrado do cliente! Podemos entregar o projeto não como previsões, mas como uma consultoria, indicando ao cliente que ações tomar, com base nas previsões do modelo e na análise do mercado em geral. O resultado da análise pode ser a recomendação de usar tecnologias mais avançadas como Blockchain para evitar fraudes, por exemplo, ou remanejar equipes, ou mesmo investir em um novo segmento de cliente.
E esses são apenas alguns exemplos.
Onde encontrar o conhecimento necessário para executar os cenários acima?
Formação Cientista de Dados – oferece conhecimento para executar os cenários 1, 6, 7 e 8. E também, como criar os modelos.
Formação Inteligência Artificial – oferece conhecimento para executar o cenário 9. E também, como criar os modelos.
Formação Engenheiro de Dados – oferece conhecimento para executar os cenários 4, 5, 7 e 8.
Formação Desenvolvedor RPA – oferece conhecimento para executar os cenários 2 e 3.
Formação Desenvolvedor Microsoft – oferece conhecimento para executar os cenários 1 e 5.
Formação Analista de Inteligência de Mercado – oferece conhecimento para executar o cenário 10.
Formação Java – oferece conhecimento para executar os cenários 1 e 7.
Formação Engenheiro Blockchain - oferece conhecimento para executar o cenário 10 e o cenário 8, dependendo as tecnologias usadas no Pipeline.
Formação Análise Estatística – oferece conhecimento que suporta todas as formações anteriores.
```
</pre>
</p>
</div>
</div>
<div id="dicasDSA" class="panel-collapse collapse">
<li>Como faz?: Para obter apenas as colunas numéricas do dataframe no R e filtrar essa colunas?</li>
<p>
Usar os comandos:
<pre>
```
# Obtendo apenas as colunas numéricas
colunas_numericas <- sapply(df, is.numeric)
colunas_numericas
# Filtrando as colunas numéricas para correlação
data_cor <- cor(df[,colunas_numericas])
data_cor
head(data_cor)
```
</pre>
</p>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 text-center center-block aw-bottom">
<p>©Ricardo Felippe </p>
</div>
</div>
</div>
<!-- JavaScript -->
<script src="https://ricardofelippe.github.io/theme/js/jquery-2.1.1.min.js"></script>
<script src="https://ricardofelippe.github.io/theme/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function($) {
$("div.collapseheader").click(function () {
$header = $(this).children("span").first();
$codearea = $(this).children(".input_area");
$codearea.slideToggle(500, function () {
$header.text(function () {
return $codearea.is(":visible") ? "Collapse Code" : "Expand Code";
});
});
});
});
</script>
</body>