Path: blob/master/site/pt-br/io/tutorials/elasticsearch.ipynb
25118 views
Copyright 2020 The TensorFlow IO Authors.
Transmissão de dados do Elasticsearch usando o TensorFlow IO
Visão geral
Este tutorial aborda a transmissão de dados de um cluster Elasticsearch para um tf.data.Dataset
que depois é usado em conjunto com tf.keras
para treinamento e inferência.
O Elasticsearch é principalmente um mecanismo de pesquisa distribuída com suporte ao armazenamento de dados numéricos, estruturados, não estruturados, geoespaciais, etc. Neste tutorial, usamos um dataset com registros estruturados.
OBSERVAÇÃO: ter uma compreensão básica do armazenamento do Elasticsearch ajudará a acompanhar o tutorial com facilidade.
Configure os pacotes
O elasticsearch
é utilizado para preparar e armazenar os dados dentro de índices do Elasticsearch somente para fins de demonstração. Em clusters de produção reais com diversos nós, o cluster pode receber os dados de conectores como logstash, etc.
Após os dados estarem disponíveis no cluster Elasticsearch cluster, somente o tensorflow-io
é necessário para transmitir os dados para os modelos.
Instale os pacotes do TensorFlow IO e Elasticsearch obrigatórios
Importe os pacotes
Valide as importações de tf e tfio
Baixe e configure a instância do Elasticsearch
Para fins de demonstração, a versão de código aberto do pacote Elasticsearch é usada.
Execute a instância como um processo daemon:
Após a inicialização da instância, use o comando grep elasticsearch
na lista de processos para confirmar a disponibilidade.
Faça uma consulta ao endpoint base para recuperar as informações sobre o cluster.
Explore o dataset
Neste tutorial, vamos baixar o dataset PetFinder e alimentar o Elasticsearch com dados manualmente. O objeto deste problema de classificação é prever se o animal de estimação será adotado ou não.
Neste tutorial, são feitas modificações na coluna de rótulo: 0 indicará que o animal doméstico não foi adotado, e 1 indicará que foi.
Divida o dataset
Armazene os dados de treinamento e teste em índices do Elasticsearch
Ao armazenar os dados no cluster local do Elasticsearch, é simulado um ambiente para recuperação contínua de dados remotos para treinamento e inferência.
Prepare os datasets tfio
Quando os dados estiverem disponíveis no cluster, somente tensorflow-io
é necessário para transmitir os dados dos índices. A classe elasticsearch.ElasticsearchIODataset
é utilizada para essa finalidade. Ela herda de tf.data.Dataset
e, portanto, expõe todas as funcionalidades úteis de tf.data.Dataset
de forma integrada.
Dataset de treinamento
Dataset de teste
Defina as camadas de pré-processamento do Keras
Conforme o tutorial sobre dados estruturados, é recomendável usar as camadas de pré-processamento do Keras, pois elas são mais intuitivas e podem ser integradas aos modelos com facilidade. Porém, as feature_columns (colunas de características) padrão também podem ser usadas.
Para entender melhor as preprocessing_layers
na classificação de dados estruturados, confira o tutorial sobre dados estruturados.
Busque um lote e observe as características de um registro de amostra, o que ajudará a definir as camadas de pré-processamento do Keras para treinar o modelo do tf.keras
.
Escolha um subconjunto de características.
Crie, compile e treine o modelo
Faça a inferência com os dados de teste
Observação: como o objetivo deste tutorial é demonstrar a capacidade do TensorFlow IO de transmitir dados do Elasticsearch e treinar modelos do tf.keras
diretamente, aumentar a exatidão dos modelos está fora do escopo atual. Porém, o usuário pode explorar o dataset e fazer experimentos com as colunas de características e arquiteturas do modelo para ter um melhor desempenho ao fazer a classificação.