Vejo muitas vezes na descrição do trabalho de um cientista de dados que solicita experiência em Python / Java e desconsidere R. Abaixo está um e-mail pessoal que recebi do cientista de dados principal de uma empresa que solicitei através do linkedin.
X, obrigado por conectar e expressar interesse. Você tem boas habilidades de análise. No entanto, todos os nossos cientistas de dados devem ter boas habilidades de programação em Java / Python, pois somos uma organização móvel / da Internet e tudo o que fazemos é online.
Embora eu respeite a decisão do principal cientista de dados, não consigo obter uma imagem clara de quais são as tarefas que o Python pode executar que R não pode executar. Alguém pode se importar em elaborar? Na verdade, estou interessado em aprender Python / Java, desde que eu tenha um pouco mais de detalhes.
Edit: Encontrei uma discussão interessante sobre o Quora. Por que o Python é uma linguagem de escolha para cientistas de dados?
Edit2: Blog da Udacity em idiomas e bibliotecas para aprendizado de máquina
fonte
Respostas:
Assim, você pode integrar-se ao restante da base de código. Parece que sua empresa usa uma mistura de Java e python. O que você fará se um cantinho do site precisar de aprendizado de máquina; passar os dados com um banco de dados ou cache, solte para R e assim por diante? Por que não fazer tudo no mesmo idioma? É mais rápido, mais limpo e mais fácil de manter.
Conhece alguma empresa on-line que roda exclusivamente no R? Nem eu...
Tudo o que disse Java é a última linguagem em que eu faria ciência de dados.
fonte
Pode haver vários motivos, como:
Flexibilidade da força de trabalho: Um programador Java / Python pode ser movido para outras tarefas ou projetos facilmente.
Disponibilidade dos candidatos: há muitos programadores em Java / Python. Você não deseja introduzir uma nova linguagem de programação para descobrir posteriormente que não há trabalhadores qualificados ou eles são muito caros.
Integração e ETL: Às vezes, obter os dados com a qualidade certa é a parte mais difícil do projeto. Portanto, é natural usar o mesmo idioma que o resto dos sistemas.
Definição de modelo de negócios: a maioria das regras e modelos de negócios já está escrita nesses idiomas.
Apenas mantendo as coisas simples. Já é difícil o suficiente para estar atualizado com as tecnologias. Uma base diversa da linguagem pode ser caótica. R para isso, Ruby para isso, Scala, Clojure, F #, Swift, Dart ... Eles podem precisar de servidores diferentes, patches diferentes, um inferno para administrar. Todos têm seus próprios IDEs com ferramentas e plugins (nem sempre gratuitos). Veja alguns pontos do tio Bob sobre escolha de idiomas e novas tecnologias
Portanto, mesmo se você tiver uma vantagem de produtividade de 5% a 15% usando R para a tarefa específica, eles podem preferir uma ferramenta que apenas faça o trabalho, mesmo que não seja da maneira mais eficiente.
fonte
.csv
arquivos - para o qual o objetivo R é realmente a melhor ferramenta adequada no mercado. Disponibilidade de candidatos: o fato de haver mais programadores Java do que os programadores R não implica que você precise descartar um candidato R se tiver um. Realmente não importa como o cientista realiza seus exercícios, desde que implante código legível que possa ser executado por alguns servidores (ou qualquer outra coisa que a empresa esteja executando).Em geral, é verdade que, para exercícios puramente de ciência de dados e estatística, o R oferece as melhores e mais rápidas
data.table
ferramentas e métodos (especialmente se estiver usando o pacote), que de outra forma seriam mais pesados de implementar no Python (presumo que no Python todos nós queremos dizer pandas, embora ) De fato, a maioria dos cientistas de dados usa R para executar seus modelos e cálculos, ou apenas para ver como os dados se comportam.Quando o exercício estiver concluído, é hora de disponibilizá-lo para o restante das pessoas que precisam usá-lo (por exemplo, para implantar); para esse objetivo, muitas vezes é preferível enviar o código em Python por dois motivos principais:
O que foi dito acima, ainda é verdade que é possível traduzir facilmente o código R para qualquer outra linguagem, desde que métodos, bibliotecas e pacotes estejam disponíveis (no Python, a maioria deles é, de modo que não há problema algum). Muitas infraestruturas e bancos de dados suportam o código R subjacente, portanto, a portabilidade não é realmente um problema, especialmente se é necessário enviar os resultados dos cálculos (nesse sentido, ninguém realmente vê o código subjacente).
Java é quase inútil para a pura ciência de dados (embora a Universidade de Stanford tenha uma coleção de bibliotecas de NLP de aprendizado de máquina escritas em Java, tanto quanto me lembro - mas verifique). A única razão pela qual isso pode ser exigido é que o restante da empresa o utiliza em grande escala e não deseja substituí-lo por algo novo.
fonte
data.table
oferece; o scikit-learn, como você mencionou, é outro exemplo, mas há muitos outros de acordo com o caso em questão.Eu já vi várias empresas usando o título Data Scientist para funções do tipo "Data Engineer". Particularmente no espaço de big data.
Se a empresa estiver usando o Hadoop ou uma estrutura distribuída como o Spark para fazer análises em Java ou Python (ou provavelmente Scala) seriam as linguagens que mais fariam sentido.
fonte
Java
Eu teria que discordar dos outros pôsteres sobre a questão do Java. Existem certos bancos de dados noSQL (como o hadoop) que são necessários para escrever trabalhos de mapreduce em java . Agora você pode usar o HIVE para obter o mesmo resultado.
Pitão
O debate python / R continua. Ambos são idiomas extensíveis, portanto, potencialmente, ambos podem ter a mesma capacidade de processar. Eu sei apenas R e meu conhecimento de python é bastante superficial. Falando como proprietário de uma pequena empresa, você deseja não ter muitas ferramentas em sua empresa, caso contrário, haverá uma falta geral de profundidade e dificuldade em apoiá-las. Eu acho que isso vai se aprofundar no conhecimento das ferramentas da equipe. Se a equipe estiver focada em python, a contratação de outro cientista de dados em python fará sentido, pois eles podem se envolver com a base de código existente e o código do experimento histórico.
fonte
Pelo menos para minha equipe atual (~ 80 cientistas e engenheiros de dados), não temos essa preferência. Metade dos cientistas de dados aqui usa R e outra metade usa Python. Muitos podem codificar em ambos. Implementamos código Python e R na produção.
Eu não acho que nenhum de nossos cientistas de dados use Java. Se eles precisam lidar com big data, eles podem usar SparkSQL ou PySpark. A equipe de engenharia de dados usa uma combinação de Java / Scala / Python / Go.
Se você é uma das poucas pessoas de dados em uma pequena empresa, entendo por que elas exigem certas habilidades de linguagem para que você possa fazer ciência e engenharia de dados. Mas acho que a maioria das pequenas empresas não terá dados grandes o suficiente para que o Python ou o R não possam lidar com a produção.
fonte
Meu ponto de vista como programador de propósito geral com um pouquinho de experiência em R: R é excelente para ciência de dados, mas é voltado para pessoas que interpretam dados manualmente. Se você quiser usar os resultados para algo automatizado, precisará interagir com outra coisa, e será difícil fazer outra coisa em um idioma específico do problema como R. Você pode criar um site em R? :) Por outro lado, o python já possui bibliotecas prontas para o material de ciência de dados e é uma linguagem de programação de uso geral que não atrapalha o seu desempenho. Quanto ao Java, é bom para grandes projetos de programação com centenas de milhares a milhões de linhas de código. Se a parte de ciência de dados precisar interagir com isso, pode fazer sentido fazer tudo em Java então.
Lamentação aleatória: Por que tenho que entrar em cada site StackExchange separadamente?
fonte
As ferramentas em Python são melhores que a comunidade R. Ther R é bem estagnada, enquanto a comunidade Python está evoluindo muito rápido. Especialmente em ferramentas para ciência de dados.
Além disso, o Python funciona muito mais fácil com tudo ao seu redor. Você pode facilmente raspar a web, conectar-se a bancos de dados e assim por diante. Isso torna a prototipagem muito rápida.
E se você tem um protótipo funcional e deseja torná-lo mais rápido ou integrá-lo ao fluxo de trabalho da empresa, ele geralmente é reimplementado em Java.
O R possui algumas ferramentas e visualização limpas, mas não é tão bom criar coisas novas nele.
fonte