Quero escrever um serviço de mineração de dados no Google Go que colete dados por meio de raspagem e APIs.
No entanto, como o Go não possui um bom suporte de ML, eu gostaria de fazer o material de ML em Python.
Tendo experiência na Web, conectaria os dois serviços a algo como RPC, mas como acredito que esse seja um problema comum na ciência de dados, acho que existe uma solução melhor.
Por exemplo, a maioria dos protocolos (web) não possui:
- buffer entre processos
- armazenamento em cluster em várias instâncias
Então, quais tipos de bibliotecas os cientistas de dados usam para conectar diferentes idiomas / processos?
Bodo
machine-learning
data-mining
bodokaiser
fonte
fonte
Respostas:
O
Data Science Toolkit
é uma biblioteca poderosa (ou coleção de bibliotecas, tecnicamente), disponível em vários idiomas. Por exemplo, eu uso a implementação chamadaRDSTK
em R.No caso do seu idioma preferido, o Google Go, há uma lista de bibliotecas relacionadas à Web aqui que parece muito útil.
fonte
Data Science Toolkit
é muito interessante, mas não o que estou procurando. Estou procurando por um protocolo baseado em fluxo de alto desempenho que permita transmitir (e armazenar em buffer) dados de n mineradores de dados para m processadores de dados.Se sua única motivação para usar o Google Go for scraping, e você desejar fazer o ML em python, recomendo a seguinte pilha:
Solicitações Python para raspagem de dados
MongoDB para armazenamento em cache de dados (o formato orientado à página do MongoDB o torna um local natural para armazenar objetos JSON geralmente retornados por APIs)
pymongo para interface de python e mongodb
scikit-learn para fazer seu aprendizado de máquina
Isso tudo acontece em python e você pode estender vários processadores com multiprocessamento ou para vários nós com django
fonte
Não sou 100% se uma biblioteca de filas de mensagens será a ferramenta certa para este trabalho, mas até agora parece-me.
Com uma biblioteca de mensagens como:
Você pode conectar diferentes processos operando em um ambiente diferente através de um protocolo baseado em TCP. Como esses sistemas são executados distribuídos, é possível conectar vários nós.
Para o nsq, temos até uma biblioteca em Python e Go!
fonte