Je commence tout juste à développer une application d' apprentissage automatique à des fins académiques. J'utilise actuellement R et m'entraîne moi-même. Cependant, dans de nombreux endroits, j'ai vu des personnes utiliser Python .
Qu'est-ce que les gens utilisent dans les universités et l'industrie et quelle est la recommandation?
machine-learning
r
python
Peter Mortensen
la source
la source
Réponses:
Certaines différences importantes à prendre en compte lorsque vous choisissez R ou Python plutôt que l'autre:
Donc, les deux langues sont également bonnes. Par conséquent, en fonction de votre domaine et de l'endroit où vous travaillez, vous devez choisir judicieusement la bonne langue. Le monde de la technologie préfère généralement utiliser une seule langue. Les utilisateurs professionnels (analyse marketing, analyse de la vente au détail) utilisent généralement des langages de programmation statistiques tels que R, car ils effectuent fréquemment des prototypes rapides et créent des visualisations (ce qui est plus rapide en R que Python).
la source
Il n'y a rien comme "python est meilleur" ou "R est beaucoup mieux que x".
Le seul fait que je sache, c’est que dans l’industrie, beaucoup de gens s’en tiennent au python, car c’est ce qu’ils ont appris à l’université. La communauté python est très active et dispose de quelques excellents frameworks pour ML, l’exploration de données, etc.
Mais pour être honnête, si vous avez un bon programmeur c, il peut faire la même chose que les gens en python ou r, si vous avez un bon programmeur java, il peut également tout faire (ou presque) en java.
Alors, tenez-vous-en à la langue avec laquelle vous êtes à l'aise.
la source
Quelques pensées supplémentaires.
Le langage de programmation «en soi» n’est qu’un outil. Toutes les langues ont été conçues pour rendre certains types de constructions plus faciles à construire que d’autres. Et la connaissance et la maîtrise d'un langage de programmation sont plus importantes et efficaces que les fonctionnalités de ce langage par rapport aux autres.
Autant que je sache, cette question a deux dimensions. La première dimension est la capacité d'explorer, d'établir rapidement des preuves de concepts ou de modèles, en disposant éventuellement de suffisamment d'outils pour étudier ce qui se passe (tests statistiques, graphiques, outils de mesure, etc.). Ce type d’activité est généralement préféré par les chercheurs et les spécialistes de l’informatique (je me demande toujours ce que cela signifie, mais j’utilise ce terme pour en donner une définition approximative). Ils ont tendance à s'appuyer sur des instruments bien connus et vérifiés, pouvant servir de preuves ou d'arguments.
La deuxième dimension est la capacité à étendre, modifier, améliorer ou même créer des outils, des algorithmes ou des modèles. Pour ce faire, vous avez besoin d’un langage de programmation approprié. À peu près tous sont les mêmes. Si vous travaillez pour une entreprise et que vous dépendez beaucoup de son infrastructure, la culture interne et vos choix diminuent considérablement. En outre, lorsque vous souhaitez implémenter un algorithme pour une utilisation en production, vous devez faire confiance à la mise en œuvre. Et mettre en œuvre dans une autre langue que vous ne maîtrisez pas ne vous aidera pas beaucoup.
J'ai tendance à privilégier, pour le premier type d'activité, l'écosystème R. Vous avez une grande communauté, un vaste ensemble d’outils, la preuve que ces outils fonctionnent comme prévu. En outre, vous pouvez envisager Python, Octave (pour n'en nommer que quelques-uns), qui sont des candidats fiables.
Pour la deuxième tâche, vous devez penser avant à ce que vous voulez vraiment. Si vous voulez des outils robustes prêts pour la production, alors C / C ++, Java et C # sont d'excellents candidats. Je considère Python comme un second citoyen de cette catégorie, avec Scala et ses amis. Je ne veux pas commencer une guerre de flammes, c'est mon avis seulement. Mais après plus de 17 ans en tant que développeur, j'ai tendance à préférer un contrat strict et mes connaissances à la liberté de faire ce que vous voulez (comme cela se produit avec beaucoup de langages dynamiques).
Personnellement, je veux apprendre le plus possible. J'ai décidé que je devais choisir la méthode la plus difficile, ce qui signifie tout mettre en œuvre moi-même. J'utilise R comme modèle et inspiration. Il a de grands trésors dans les bibliothèques et beaucoup d’expérience distillée. Cependant, R en tant que langage de programmation est un cauchemar pour moi. J'ai donc décidé d'utiliser Java et de ne pas utiliser de bibliothèque supplémentaire. C'est uniquement à cause de mon expérience et rien d'autre.
Si vous avez le temps, la meilleure chose à faire est de passer du temps avec toutes ces choses. De cette façon, vous gagnerez la meilleure réponse possible, adaptée pour vous. Dijkstra a déjà déclaré que les outils influaient sur votre façon de penser. Il est donc conseillé de connaître vos outils avant de les laisser modéliser votre façon de penser. Vous pouvez en savoir plus à ce sujet dans son célèbre article intitulé The Humble Programmer.
la source
J'ajouterais à ce que d'autres ont dit jusqu'à présent. Il n'y a pas de réponse unique qu'une langue est meilleure qu'une autre.
Cela dit, R dispose d’une meilleure communauté pour l’exploration et l’apprentissage des données. Il dispose de capacités de visualisation étendues. Python, en revanche, est devenu meilleur en traitement de données depuis l’introduction des pandas. Le temps d’apprentissage et de développement est très inférieur en Python par rapport à R (R étant un langage de bas niveau).
Je pense que cela se résume finalement à l'éco-système dans lequel vous vous trouvez et à vos préférences personnelles. Pour plus de détails, vous pouvez regarder cette comparaison ici .
la source
Il n’existe pas de solution miracle pour résoudre chaque problème lié aux données. Le choix de la langue dépend du contexte du problème, de la taille des données et si vous travaillez sur un lieu de travail, vous devez vous en tenir à ce qu’ils utilisent.
Personnellement, j'utilise R plus souvent que Python en raison de ses bibliothèques de visualisation et de son style interactif. Mais si j'ai besoin de plus de performances ou de code structuré, j'utilise certainement Python car il possède certaines des meilleures bibliothèques telles que SciKit-Learn, numpy, scipy, etc. J'utilise indifféremment R et Python dans mes projets.
Donc, si vous commencez à travailler sur la science des données, je vous suggère d'apprendre les deux et ce n'est pas difficile, car Python fournit également une interface similaire à R avec Pandas .
Si vous devez gérer des jeux de données beaucoup plus volumineux, vous ne pouvez pas échapper aux écosystèmes construits avec Java (Hadoop, Pig, Hbase, etc.).
la source
Il n'y a pas de "meilleur" langage. J'ai essayé les deux et je suis à l'aise avec Python, donc je ne travaille qu'avec Python. Bien que j'apprenne toujours des choses, mais je n'ai rencontré aucun obstacle avec Python jusqu'à présent. La bonne chose à propos de Python est que la communauté est trop bonne et que vous pouvez facilement obtenir beaucoup d’aide sur Internet. Autre que cela, je dirais aller avec la langue que vous aimez pas celle que les gens recommandent.
la source
D'après mon expérience, la réponse dépend du projet en cours. Pour la recherche pure, je préfère R pour deux raisons: 1) une grande variété de bibliothèques et 2) une grande partie de la littérature sur la science des données comprend des échantillons R.
Si le projet nécessite l'utilisation d'une interface interactive par les non-initiés, j'ai trouvé que R était trop contraint. Shiny est un bon début, mais ce n'est pas encore assez flexible. Dans ces cas-là, je commencerai par examiner le portage de mon travail R vers Python ou js.
la source
Un problème que toutes les autres réponses ne parviennent pas à résoudre est la licence .
La plupart des merveilleuses bibliothèques R mentionnées ci-dessus sont GPL (par exemple, ggplot2 , data.table ). Cela vous empêche de distribuer votre logiciel sous une forme propriétaire.
Bien que de nombreuses utilisations de ces bibliothèques n'impliquent pas la distribution du logiciel (par exemple, pour former des modèles hors ligne), la GPL peut à elle seule empêcher les entreprises de les utiliser. Tout du moins selon moi.
En revanche, dans le domaine python, la plupart des bibliothèques disposent de licences de distribution adaptées aux entreprises, telles que BSD ou MIT.
Dans le monde universitaire, les problèmes de licence ne sont normalement pas des problèmes.
la source
Pas grand chose à ajouter aux commentaires fournis. Seule chose est peut-être cette infographie comparant R vs Python à des fins de science des données http://blog.datacamp.com/r-or-python-for-data-analysis/
la source
L’un des vrais défis, j’ai fait face à R, ce sont différents packages compatibles avec différentes versions. Un grand nombre de packages R ne sont pas disponibles pour la dernière version de R .. Et plusieurs fois R donne une erreur en raison d’une bibliothèque ou un package a été écrit pour version..
la source
Je n'ai pas essayé R (bon, un peu, mais pas assez pour faire une bonne comparaison). Cependant, voici quelques points forts de Pythons:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(pour la multiplication de la matrice), ...la source
Je préfère Python à R, car Python est un langage de programmation complet, ce qui me permet de réaliser des tâches d'apprentissage automatique telles que la collecte de données à l'aide d'un serveur HTTP écrit en Python, d'effectuer des tâches de ML avancées, puis de publier les résultats en ligne. Tout cela peut être fait en Python. En fait, j'ai trouvé que R était plus difficile à apprendre et les avantages de l'apprentissage de Python sont bien meilleurs car il peut être utilisé pour pratiquement toutes les tâches de programmation.
la source
R: R est le pendant open source. qui a été traditionnellement utilisé dans les universités et la recherche. En raison de leur nature open source, les dernières techniques sont publiées rapidement. Il existe une grande quantité de documentation disponible sur Internet et c'est une option très rentable. Python: Avec son origine comme langage de script open source, l'utilisation de Python a augmenté avec le temps. Aujourd'hui, il est doté de bibliothèques (numpy, scipy et matplotlib) et fonctionne pour presque toutes les opérations statistiques / création de modèles que vous souhaitez effectuer. Depuis l’introduction des pandas, il est devenu très fort dans les opérations sur données structurées.
Code python
Bibliothèque d'importation
Importer d'autres librairies indispensables comme pandas, numpy ...
à partir de sklearn import linear_model
Charger le train et tester des jeux de données
Identifiez les variables de caractéristique et de réponse et les valeurs doivent être des tableaux numériques et numpy
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
Créer un objet de régression linéaire
linear = modèle_linéaire.RégressionLinéaire ()
Entraînez le modèle à l'aide des ensembles d'entraînement et vérifiez le score
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Coefficient d'équation et d'interception
print ('Coefficient: \ n', linear.coef_) print ('Intercept: \ n', linear.intercept_)
Prédire la sortie
prédit = linear.predict (x_test) R Code
Charger le train et tester des jeux de données
Identifiez les variables de caractéristique et de réponse et les valeurs doivent être des tableaux numériques et numpy
x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x <- - cbind (x_train, y_train)
Entraînez le modèle à l'aide des ensembles d'entraînement et vérifiez le score
linear <- lm (y_train ~., data = x) résumé (linéaire)
Prédire la sortie
prédite = prédire (linéaire, x_test)
la source
Je ne pense pas que Python possède une interface graphique point-click qui le transforme en SPSS et SAS. Jouer avec ceux-ci est vraiment amusant.
la source
J'ai eu cette image dans un post linkedin. Chaque fois que j'ai un doute sur l'utilisation de python ou de R, je le vérifie et cela s'avère très utile.
la source