quarta-feira, 5 de setembro de 2018

Entregando projetos de Machine Learning com Marvin-AI Parte 1

E ai pessoal, tudo bem?

Depois de algum tempo sem novidades, quero mostrar o projeto em que estou trabalhando, o Marvin AI - um projeto open source para ajudar no desenvolvimento e entrega de modelos de machine learning.

Se você já teve problemas durante a criação ou no deploy de um projeto de aprendizado de máquina, esse texto é pra você cara!

quarta-feira, 14 de fevereiro de 2018

GPU para Deep Learning por conta do Google

Oi Pessoal, tudo bem?

Se você já tentou treinar uma rede neural profunda em seu computador pessoal deve saber a diferença que uma placa gráfica (GPU) faz! A diferença de tempo no treinamento é gigantesca entre o processamento feito em CPU e GPU, mesmo que você tenha uma plaquinha gráfica humildona vale muito mais a pena usá-la do que seu processador core i7.

Já pensou poder usar uma GPU parruda sem ter que gastar milhares de reais? E de graça, já pensou? Isto esta apenas a alguns cliques de você e hoje vou te mostrar como acessar essa maravilha!

quinta-feira, 25 de janeiro de 2018

Data Science - Por onde começar?

Olá pessoal, tudo bem?

Hoje quero compartilhar um conteúdo rápido (era pra ser mas falhei...kkkk), vamos falar sobre como começar a estudar data science e machine learning!

Algumas pessoas, de diferentes círculos sociais e backgrounds, já me pediram recomendações sobre como começar a estudar data science e/ou machine learning. Fico lisonjeado com este tipo de pedido, pois não me considero uma referência e o que não falta nesta área são dicas de por onde começar!

quinta-feira, 7 de dezembro de 2017

O Status do Data Science em 2017

Olá pessoal, tudo bem?

Hoje vou compartilhar os resultados de uma pesquisa feita pelo Kaggle sobre o status da área de data science no mundo e também de uma análise que estou criando com os dados da pesquisa, especificamente sobre o Brasil!

sexta-feira, 6 de outubro de 2017

Jupyter Notebook na Nuvem para Analises com muitos Dados

Olá pessoal, tudo bem?

Hoje vou mostrar como configurar o ambiente Jupyter Notebook em um servidor remoto, de forma fácil e que nos permita aproveitar a flexibilidade da nuvem para fazer nossas analises de dados.

Mas o que é Jupyter Notebook e por que instala-lo em um servidor?


O Jupyter é, segundo o site do projeto, uma aplicação web de código aberto que permite criar e compartilhar documentos que contenham código vivo, equações, visualizações e texto explicativo. Ele é um dos principais ambientes para a análise de dados, onde você pode usar não apenas Python mas várias outras linguagens como você pode ver aqui.

Normalmente, o Jupyter é instalado localmente e fica disponível na porta 8888 em localhost quando iniciado. Instala-lo em um servidor se torna útil quando o volume de dados a ser analisado é maior que a memória RAM disponível. Existem outras opções nestes casos, como processar os dados em lotes, usar processamento distribuído e etc, mas nenhuma delas é tão simples quanto ter todos os dados em memória. Pretendo abordar algumas dessas opções aqui no blog, mas farei isso quando surgir a necessidade!

terça-feira, 22 de agosto de 2017

Brincando de Big Data e Data Mining

Olá pessoal, tudo bem?

Hoje quero compartilhar uma brincadeira experimento que fiz relacionado ao que podemos chamar de big data e data mining. Vamos ver quão rápido conseguimos processar alguns gigabytes de dados!

terça-feira, 14 de março de 2017

DataViz - Ferramentas para visualização de dados em Python!

Olá pessoal! Tudo bem?

Hoje quero mostrar algumas ferramentas muito interessantes para visualização de dados. Pretendo retomar o assunto do post anterior, onde usamos um pouco de machine learning para categorizar reportagens em português, mas a pausa é bem justificada!

quarta-feira, 25 de janeiro de 2017

Um Pouco de Machine Learning com Python

E ai pessoal, tudo bem?

É quase um milagre este post sair com tão pouco tempo desde o último, mas o fato é que estou muito empolgado com meus estudos e o curso da Udemy que comentei no ultimo post, tanto que comecei a aplicar algumas coisas na prática!

Hoje quero mostrar um pequeno programa que criei para testar e praticar as técnicas de Machine Learning na categorização de textos. É apenas um protótipo que usa matérias jornalisticas, mas você pode baixa-lo para testar e estudar!

sexta-feira, 16 de dezembro de 2016

Data Analysis com Python Pandas - O Início

E ai pessoal, tudo bem?

Faz bastante tempo que não publico nada novo, estive muito envolvido com questões menos técnicas nesse período, estudando coisas que literalmente mudaram minha forma de ver o mundo. Mas isso fica pra outra hora.

O que me motivou a voltar a escrever são meus recentes estudos sobre análise de dados com Python, em especial com a biblioteca Pandas!

sexta-feira, 13 de fevereiro de 2015

Campos Dinâmicos no MongoDB

Tudo bem pessoal?

Estou aqui para dar mais uma pequena dica sobre MongoDB. Vou falar hoje de um problema com campos dinâmicos que passei em meu projeto atual e como consegui resolve-lo com um ajuste no schema de dados.

No projeto em questão precisamos permitir que os usuários criem campos que não estão no schema padrão para armazenar seus conteúdos específicos. Esta necessidade de dinamismo no schema foi um dos motivos, dentre outros, que nos levou a escolher o MongoDB.

segunda-feira, 1 de dezembro de 2014

Instalando MongoDB na AWS

E ai pessoal, tudo bem?

Em meu último post aqui no blog falei sobre a criação de Replica Sets com o MongoDB. Na época estava passando por problemas com a performance das consultas no banco e imaginava que a melhor saída seria a criação de um Replica Set para distribuir as leituras nessa estrutura, porem eu estava enganado e hoje venho aqui compartilhar com vocês algumas coisas que aprendi nesse ínterim.

quarta-feira, 19 de fevereiro de 2014

Escalando MongoDB - Replica Sets - Passo 1

E ai pessoal?

Depois de muito tempo sem postar nada, resolvi compartilhar o que venho estudando sobre MongoDB. São meus primeiros passos e por enquanto não há nada muito profundo, mas como existem poucas referencias em nosso idioma, acho que vale a pena escrever o que venho aprendendo.

Nesse post vamos montar uma estrutura de Replica Set do MongoDB com três servidores da forma mais simples possível. Vou usar Amazon EC2 para montar essa estrutura, mas você pode usar máquinas virtuais locais de forma fácil, por exemplo com VirtualBox ou Vagrant.

quarta-feira, 23 de outubro de 2013

O Mítico Homem-Mês - O Poço de Alcatrão - Cap. 1

Oi pessoal, tudo bem?

Depois de muito tempo sem postar nada em meu blog e de mudar aqui para o Blogger, estou voltando a escrever basicamente devido a um livro, O Mítico Homem-Mês.

Este livro foi escrito por Frederick Brooks Jr originalmente em 1975 (sim, estamos falando de um clássico!) mas vem recebendo atualizações devido a importância da obra. Este foi um dos primeiros, se não o primeiro, grande livro a tratar da industria de software onde Brooks fala sobre os desafios que encontrou durante o projeto do OS/360 da IBM.

Estou lendo uma edição de 1995 que, apesar dos quase 20 anos, traz reflexões e propostas muito atuais, que lembram em muito as metodologias de desenvolvimento ágil! Eu comprei esta edição por 1/3 do preço praticado nas livrarias em um site chamado Estante Virtual, recomendo!

Minha ideia aqui não é fazer um resumo do livro, mas sim registrar os pontos mais importantes e compartilhar minhas reflexões sobre os temas do livro. Por isso, deixo aberto o campo de comentários para que possamos conversar sobre o assunto!

terça-feira, 22 de janeiro de 2013

Alterar campo do formulário em um Inline FormSet

Oi pessoal, tudo bem? Depois de algum tempo sem novidades, aqui esta o primeiro post do ano!

Este post esta mais para uma dica (ou um registro pessoal) de como resolver um problema aparentemente simples mas que me custou algumas horas de pesquisa. O problema esta relacionado a alterações que fazemos em campos, ou seus atributos, de formulários do Django. Por exemplo, se precisamos incluir opções ao choices de um ChoiceField ou CharField de forma dinâmica podemos sobrescrever o método inicializador do Form, mais ou menos assim:

sábado, 27 de outubro de 2012

InterCon 2012 - Social Mining para métricas. Extraindo dados direto dafonte

Oi pessoal, tudo bem? O blog andou um pouco parado nos últimos tempos, mas hoje eu tenho um ótimo motivo para quebrar essa monotonia por aqui, do InterCon 2012! Esta foi a nona edição de um evento que já é bem conhecido pelos profissionais de métricas, publicitários e até desenvolvedores. Eu confesso que não conhecia o evento - essa foi minha primeira participação - mas fiquei muito impressionado com a organização, infra, nível das palestras e todas aquelas coisas que costumam ser criticadas em grandes eventos. Aproveito para deixar meus parabéns ao iMasters e os organizadores!

Alem de ser minha primeira participação, ainda fui convidado a palestrar com meu amigo e colega de trabalho Vitor Franchito sobre Social Mining para métricas por um dos organizadores e também amigo de trabalho, o Leo Naressi. Nosso objetivo era mostrar, de forma prática, como extrair dados das redes sociais e como analisar estes dados para melhor aproveita-los para uma marca, e, claro, minha parte era a extração dos dados =D. Para isso desenvolvi alguns pequenos exemplos que gostaria de compartilhar com vocês!

sábado, 9 de junho de 2012

Decorator de decorators

E ai pessoal, tudo bem?

Bom, o post de hoje vai ser bem curto, pretendo apenas aproveitar uma oportunidade e abordar um assunto.

A alguns dias, um amigo do trabalho me perguntou se seria possível criar um decorator de decorators. O objetivo era simples, evitar a repetição de chamadas a decorators muito usados e essa a sintaxe feia abaixo:

@decorator_a
@decorator_b
@decorator_c
def teste(bla):
    print bla

quarta-feira, 16 de maio de 2012

Usando decorators para timing

E ai pessoal, tudo bem?

O último post foi bem extenso porque eu precisava dar um overview sobre o assunto, mas este será mais objetivo. Depois de escrever sobre profiling tive oportunidade de aplicar o que venho estudando em um projeto e ver, na prática, o quanto este conhecimento é importante. Também recebi boas criticas sobre a publicação anterior, sinal que o assunto é do interesse de mais gente! Por tanto, vamos a uma dica que tem me ajudado bastante.

Das ferramentas citadas no post anterior tenho usado muito o Django Debug Toolbar e o modulo timeit do Python, mas nenhum dos dois supriu minha necessidade de saber, de forma simples e rápida, quanto tempo um determinado método ou uma view do Django demora para ser executada. No inicio eu fiz a subtração do tempo, como o módulo time, no próprio método mas logo percebi que precisava de um decorator. Depois de pesquisar um pouco, cheguei a minha versão do mesmo que compartilho com vocês:

sexta-feira, 4 de maio de 2012

Performance de web apps Python com Django

E ai pessoal! Tem-se falado muito sobre a performance de aplicações Python e também sobre web apps Python feitas em Django, reflexo da crescente adoção destas tecnologias em projetos cada vez maiores. Meu caso não é diferente, trabalho com Python e Django e, devido as necessidades dos projetos, tenho estudado sobre esse assunto que acho muito interessante. O problema é que cada texto que encontrei tratava de apenas uma abordagem deste tema, seja o deployment, as tecnologias usadas, a arquitetura ou o profiling do código em si. Por isso resolvi escrever este post, uma tentativa de compilar todos estes pontos e criar um material que ajude, de forma geral, a conseguir um melhor desempenho de nossas aplicações.

Vou adotar como estratégia uma abordagem "de fora para dentro", na intenção de começar com fatores externos ao código que podem interferir na performance da aplicação, seguindo com os temas relacionados ao código e como podemos "medir" os mesmos.