Estou apenas começando a desenvolver um aplicativo de aprendizado de máquina para fins acadêmicos. Atualmente, estou usando R e me treinando nele. No entanto, em muitos lugares, vi pessoas usando Python .
O que as pessoas estão usando na academia e na indústria e qual é a recomendação?
machine-learning
r
python
Peter Mortensen
fonte
fonte
Respostas:
Algumas diferenças realmente importantes a serem consideradas ao escolher R ou Python :
Então, os dois idiomas são igualmente bons. Portanto, dependendo do seu domínio e do local em que você trabalha, você deve escolher com inteligência o idioma certo. O mundo da tecnologia geralmente prefere usar um único idioma. Os usuários de negócios (análise de marketing, análise de varejo) geralmente usam linguagens de programação estatística como R, pois frequentemente fazem prototipagem rápida e criam visualizações (o que é mais rápido em R que em Python).
fonte
Não há nada como "python é melhor" ou "R é muito melhor que x".
O único fato que sei é que, na indústria, muitas pessoas aderem ao python, porque foi o que aprenderam na universidade. A comunidade python é realmente ativa e possui ótimas estruturas para mineração de dados e ML, etc.
Mas, para ser sincero, se você tem um bom programador c, ele pode fazer o mesmo que as pessoas fazem em python ou r, se você tem um bom programador java, ele também pode fazer (quase) tudo em java.
Então, fique com o idioma com o qual você se sente confortável.
fonte
Alguns pensamentos adicionais.
A linguagem de programação 'em si' é apenas uma ferramenta. Todos os idiomas foram projetados para facilitar a construção de alguns tipos de construções do que outros. E o conhecimento e domínio de uma linguagem de programação é mais importante e eficaz do que os recursos dessa linguagem em comparação com outros.
Tanto quanto posso ver, existem duas dimensões dessa questão. A primeira dimensão é a capacidade de explorar, construir provas de conceitos ou modelos em um ritmo acelerado, tendo eventualmente à mão ferramentas suficientes para estudar o que está acontecendo (como testes estatísticos, gráficos, ferramentas de medição etc.). Esse tipo de atividade é geralmente preferido por pesquisadores e cientistas de dados (eu sempre me pergunto o que isso significa, mas uso esse termo para sua definição vaga). Eles tendem a confiar em instrumentos conhecidos e verificados, que podem ser usados para provas ou argumentos.
A segunda dimensão é a capacidade de estender, alterar, melhorar ou mesmo criar ferramentas, algoritmos ou modelos. Para conseguir isso, você precisa de uma linguagem de programação adequada. Aproximadamente todos eles são iguais. Se você trabalha para uma empresa, depende muito da infraestrutura da empresa, sua cultura interna e suas escolhas diminuem significativamente. Além disso, quando você deseja implementar um algoritmo para uso em produção, precisa confiar na implementação. E implementar em outro idioma que você não domina não o ajudará muito.
Costumo favorecer o primeiro tipo de atividade no ecossistema R. Você tem uma grande comunidade, um enorme conjunto de ferramentas, provas de que essas ferramentas funcionam conforme o esperado. Além disso, você pode considerar Python, Octave (para citar alguns), que são candidatos confiáveis.
Para a segunda tarefa, você deve pensar antes no que realmente deseja. Se você deseja ferramentas robustas prontas para produção, C / C ++, Java e C # são ótimos candidatos. Considero o Python como um segundo cidadão nesta categoria, junto com Scala e amigos. Não quero iniciar uma guerra de chamas, é apenas minha opinião. Mas depois de mais de 17 anos como desenvolvedor, tenho a tendência de preferir um contrato estrito e meu conhecimento do que a liberdade de fazer o que você pensa (como acontece com muitas linguagens dinâmicas).
Pessoalmente, quero aprender o máximo possível. Decidi que tenho que escolher da maneira mais difícil, o que significa implementar tudo do zero. Eu uso R como modelo e inspiração. Possui grandes tesouros em bibliotecas e muita experiência destilada. No entanto, R como linguagem de programação é um pesadelo para mim. Por isso, decidi usar Java e não utilizei nenhuma biblioteca adicional. Isso é apenas por causa da minha experiência, e nada mais.
Se você tiver tempo, a melhor coisa a fazer é passar algum tempo com todas essas coisas. Dessa maneira, você obterá a melhor resposta possível, adequada para você. Dijkstra disse uma vez que as ferramentas influenciam a maneira como você pensa, por isso é aconselhável conhecê-las antes de permitir que elas modelem como você pensa. Você pode ler mais sobre isso em seu famoso artigo chamado The Humble Programmer
fonte
Eu acrescentaria o que outros disseram até agora. Não existe uma resposta única de que um idioma seja melhor que outro.
Dito isto, R tem uma comunidade melhor para exploração e aprendizado de dados. Possui amplos recursos de visualização. O Python, por outro lado, tornou-se melhor no tratamento de dados desde a introdução dos pandas. O tempo de aprendizado e desenvolvimento é muito menor no Python, comparado ao R (R é uma linguagem de baixo nível).
Acho que tudo se resume ao ecossistema em que você está e às preferências pessoais. Para mais detalhes, você pode ver essa comparação aqui .
fonte
Não existe uma linguagem de marcador de prata que possa ser usada para resolver todos os problemas relacionados a dados. A escolha do idioma depende do contexto do problema, tamanho dos dados e, se você estiver trabalhando em um local de trabalho, terá que se ater ao que eles usam.
Pessoalmente, uso R com mais frequência do que Python devido às suas bibliotecas de visualização e estilo interativo. Mas se eu precisar de mais desempenho ou código estruturado, definitivamente utilizarei o Python, pois ele possui algumas das melhores bibliotecas como SciKit-Learn, numpy, scipy etc. Eu uso R e Python nos meus projetos de forma intercambiável.
Portanto, se você está começando um trabalho de ciência de dados, sugiro que você aprenda os dois e não é difícil, pois o Python também fornece uma interface semelhante ao R com o Pandas .
Se você precisar lidar com conjuntos de dados muito maiores, não poderá escapar dos ecossistemas criados com Java (Hadoop, Pig, Hbase etc.).
fonte
Não há linguagem "melhor". Eu tentei os dois e me sinto confortável com o Python, por isso trabalho apenas com o Python. Embora eu ainda esteja aprendendo coisas, mas não encontrei nenhum obstáculo com o Python até agora. O bom do Python é que a comunidade é boa demais e você pode obter muita ajuda na Internet facilmente. Fora isso, eu diria que vá com o idioma que você não gosta do que as pessoas recomendam.
fonte
Na minha experiência, a resposta depende do projeto em questão. Para pesquisa pura, prefiro R por dois motivos: 1) grande variedade de bibliotecas e 2) grande parte da literatura de ciência de dados inclui amostras de R.
Se o projeto exige que uma interface interativa seja usada por leigos, achei R muito restrito. O brilhante é um ótimo começo, mas ainda não é flexível o suficiente. Nesses casos, começarei a olhar para portar meu trabalho de R para Python ou js.
fonte
Um problema que todas as outras respostas não conseguem resolver é o licenciamento .
A maioria das bibliotecas de R maravilhas acima mencionados são GPL (por exemplo ggplot2 , data.table ). Isso impede que você distribua seu software de forma proprietária.
Embora muitos usos dessas bibliotecas não impliquem a distribuição do software (por exemplo, para treinar modelos offline), a GPL pode, por si só, atrair empresas para não usá-los. Pelo menos na minha experiência.
Por outro lado, no domínio python, a maioria das bibliotecas possui licenças de distribuição amigáveis aos negócios, como BSD ou MIT.
Na academia, os problemas de licenciamento normalmente não são problemas.
fonte
Não há muito a acrescentar aos comentários fornecidos. Talvez a única coisa seja esse infográfico comparando R vs Python para fins de ciência de dados http://blog.datacamp.com/r-or-python-for-data-analysis/
fonte
Um dos desafios reais que eu enfrentei com o R são diferentes pacotes compatíveis com versões diferentes .. muitos pacotes R não estão disponíveis para a versão mais recente do R .. E R há bastante tempo dá erro devido à biblioteca ou ao pacote ter sido escrito para versões mais antigas versão..
fonte
Eu não tentei R (bem, um pouco, mas não o suficiente para fazer uma boa comparação). No entanto, aqui estão alguns dos pontos fortes de Pythons:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(para multiplicação de matrizes), ...fonte
Prefiro o Python ao R, porque o Python é uma linguagem de programação completa, para que eu possa executar tarefas de aprendizado de máquina de ponta a ponta, como reunir dados usando um servidor HTTP escrito em Python, executar tarefas avançadas de ML e publicar os resultados on-line. Tudo isso pode ser feito em Python. Na verdade, achei R mais difícil de aprender e as recompensas pelo aprendizado de Python são muito maiores porque podem ser usadas para praticamente qualquer tarefa de programação.
fonte
R: R é a contraparte de código aberto. que tem sido tradicionalmente usado em estudos e pesquisas. Devido à sua natureza de código aberto, as técnicas mais recentes são lançadas rapidamente. Há muita documentação disponível na Internet e é uma opção muito econômica. Python: com a origem como uma linguagem de script de código aberto, o uso do Python aumentou com o tempo. Hoje, ele possui bibliotecas (numpy, scipy e matplotlib) e funciona para praticamente qualquer operação estatística / construção de modelo que você queira fazer. Desde a introdução dos pandas, ele se tornou muito forte nas operações de dados estruturados.
Código Python
Biblioteca de Importação
Importe outras bibliotecas necessárias, como pandas, numpy ...
sklearn import linear_model
Carregar conjuntos de dados de trem e teste
Identificar variável (s) de recurso e resposta e valores devem ser matrizes numéricas e numpy
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
Criar objeto de regressão linear
linear = linear_model.LinearRegression ()
Treine o modelo usando os conjuntos de treinamento e verifique a pontuação
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Coeficiente de equação e interceptação
print ('Coeficiente: \ n', linear.coef_) print ('Interceptação: \ n', linear.intercept_)
Prever Saída
predito = linear.predict (x_test) Código R
Carregar conjuntos de dados de trem e teste
Identificar variável (s) de recurso e resposta e valores devem ser matrizes numéricas e numpy
x_train <- valores_de_variáveis_de entrada_training_datasets y_train <- valores_de_variedades_de_variáveis_training_datasets x_test <- valores_de_ variáveis de entrada_dadosets_datasets x_ - cbind (x_train, y_train)
Treine o modelo usando os conjuntos de treinamento e verifique a pontuação
linear <- lm (y_train ~., dados = x) resumo (linear)
Prever Saída
previsto = prever (linear, x_test)
fonte
Eu não acho que o Python aponte com um clique na GUI que o transforma em SPSS e SAS. Brincar com eles é genuinamente divertido.
fonte
Consegui essa imagem em um post do linkedin. Sempre que tenho dúvidas sobre o uso de python ou R, olho para ele e isso se mostra muito útil.
fonte