Je vois plusieurs fois dans la description de poste d'un informaticien demandant une expérience Python / Java et ne tenant aucun compte de R. Ci-dessous, un courrier électronique personnel que j'ai reçu du responsable informatique d'une entreprise pour laquelle j'avais postulé via linkedin.
X, merci de vous connecter et d'exprimer votre intérêt. Vous avez de bonnes compétences en analytique. Cependant, tous nos scientifiques de données doivent avoir de bonnes compétences en programmation en Java / Python, car nous sommes une organisation Internet / mobile et tout ce que nous faisons est en ligne.
Bien que je respecte la décision du scientifique en chef des données, je ne parviens pas à avoir une idée précise des tâches que Python peut effectuer que R ne peut pas effectuer. Quelqu'un peut-il se soucier d'élaborer? En fait, je suis désireux d'apprendre Python / Java, à condition d'obtenir un peu plus de détails.
Edit: J'ai trouvé une discussion intéressante sur Quora. Pourquoi Python est-il un langage de choix pour les scientifiques de données?
Edit2: Blog d'Udacity sur les langues et les bibliothèques pour l'apprentissage automatique
la source
Réponses:
Vous pouvez donc vous intégrer au reste de la base de code. Il semble que votre entreprise utilise un mélange de Java et de python. Qu'allez-vous faire si un petit coin du site nécessite un apprentissage automatique? transmettre les données avec une base de données ou un cache, passer à R, etc.? Pourquoi ne pas tout faire dans la même langue? C'est plus rapide, plus propre et plus facile à entretenir.
Connaissez-vous des entreprises en ligne qui fonctionnent uniquement sur R? Moi non plus...
Tout cela étant dit, Java est le dernier langage dans lequel je ferais de la science des données.
la source
Il peut y avoir beaucoup de raisons comme:
Souplesse de la main-d'œuvre: un programmeur Java / Python peut facilement être déplacé vers d'autres tâches ou projets.
Disponibilité des candidats: il existe de nombreux programmeurs Java / Python. Vous ne voulez pas introduire un nouveau langage de programmation pour découvrir plus tard qu’il n’ya pas de personnel qualifié ou qu’il coûte trop cher.
Intégration et ETL: Parfois, obtenir les données avec la bonne qualité est la partie la plus difficile du projet. Il est donc naturel d’utiliser le même langage que le reste des systèmes.
Définition du modèle d'entreprise: la plupart des règles et des modèles d'entreprise sont déjà écrits dans ce langage.
Garder les choses simples. Il est déjà assez difficile d’être à la pointe de la technologie. Une base linguistique diversifiée peut être chaotique. R pour cela, Ruby pour cela, Scala, Clojure, Fa #, Swift, Dart ... Ils peuvent avoir besoin de serveurs différents, de chemins différents, d’un enfer à administrer. Tous ont leurs propres IDE avec des outils et des plugins (pas toujours gratuits). Voir quelques remarques de Oncle Bob sur le choix des langues et les nouvelles technologies
Ainsi, même si vous avez un avantage de productivité de 5% à 15% en utilisant R pour une tâche spécifique, ils peuvent préférer un outil qui fait juste le travail, même si ce n’est pas de la manière la plus efficace.
la source
.csv
fichiers, objectif pour lequel R est en fait le meilleur outil sur le marché. Disponibilité des candidats: le fait qu'il y ait plus de programmeurs Java que de programmeurs R n'implique pas que vous deviez écarter un candidat R si vous en avez un. Peu importe la manière dont le scientifique effectue ses exercices, dans la mesure où il déploie un code lisible pouvant être exécuté par certains serveurs (ou tout autre élément exploité par la société).Il est généralement vrai que pour les exercices de science et de statistique purement données, R offre les
data.table
outils et les méthodes les meilleurs et les plus rapides (surtout si vous utilisez le paquet), qui seraient autrement plus lourds à implémenter en Python (je suppose que par Python, nous entendons tous par ). La plupart des scientifiques utilisent en fait R pour effectuer leurs modèles et leurs calculs, ou simplement pour voir le comportement des données.Une fois l'exercice terminé, il est temps de le mettre à la disposition des autres personnes qui doivent l'utiliser (c'est-à-dire le déployer). à cette fin, il est souvent préférable de soumettre le code en Python pour deux raisons principales:
Cela dit, il est toujours vrai que l'on peut facilement traduire le code R dans un autre langage, à condition que des méthodes, des bibliothèques et des packages soient disponibles (la plupart d'entre eux le sont en Python, ce qui ne pose aucun problème). De nombreuses infrastructures et bases de données supportant le code R sous-jacent, la portabilité n’est donc pas un problème, surtout si l’on doit simplement soumettre les résultats des calculs (dans ce cas, personne ne voit vraiment le code sous-jacent).
Java n’est pratiquement pas utile à la science des données proprement dite (bien que l’Université de Stanford ait une collection de bibliothèques de PNL d’apprentissage automatique écrites en Java, pour autant que je me souvienne - mais veuillez vérifier). La seule raison pour laquelle cela peut être requis est simplement que le reste de la société l’utilise à grande échelle et qu’elle ne veut pas le remplacer par quelque chose de nouveau.
la source
data.table
qu’offre; Comme vous l'avez dit, scikit-learn en est un autre exemple, mais il en existe beaucoup d'autres, selon le cas.J'ai vu pas mal d'entreprises utiliser le titre Data Scientist pour des rôles de type "Data Engineer". Particulièrement dans le grand espace de données.
Si la société utilise Hadoop ou un framework distribué tel que Spark pour effectuer ses analyses, Java ou Python (ou probablement Scala) sont les langages les plus utiles.
la source
Java
Je ne suis pas d'accord avec les autres affiches sur la question Java. Il y a certaines bases de données noSQL (comme hadoop) dont on a besoin pour écrire des tâches mapreduce en java . Vous pouvez maintenant utiliser HIVE pour obtenir à peu près le même résultat.
Python
Le débat python / R continue. Les deux sont des langages extensibles, ils pourraient donc potentiellement avoir la même capacité de traitement. Je ne connais que R et ma connaissance du python est assez superficielle. En tant que propriétaire de petite entreprise, vous voulez ne pas avoir trop d’outils dans votre entreprise, sans quoi il y aura un manque général de profondeur et de difficulté à les prendre en charge. Je pense que cela va aller à la profondeur de la connaissance de l'outil dans l'équipe. Si l'équipe se concentre sur le langage python, il est logique de faire appel à un autre expert en données python, car elle peut utiliser la base de code existante et le code d'expérimentation historique.
la source
Au moins pour mon équipe actuelle (~ 80 scientifiques et ingénieurs en informatique), nous n’avons pas cette préférence. Ici, la moitié des scientifiques utilisent R et une autre moitié, Python. Beaucoup peuvent coder dans les deux. Nous déployons le code Python et R en production.
Je ne pense pas que nos scientifiques de données utilisent Java du tout. S'ils ont besoin de gérer des données volumineuses, ils peuvent utiliser SparkSQL ou PySpark. L'équipe d'ingénierie de données utilise un mélange de Java / Scala / Python / Go.
Si vous faites partie des rares personnes travaillant dans les données dans une petite entreprise, je peux comprendre pourquoi elles ont besoin de certaines compétences linguistiques pour pouvoir utiliser à la fois la science des données et l'ingénierie. Mais tbh, je pense que la plupart des petites entreprises n’auront pas assez de données que Python ou R ne peuvent pas gérer en production.
la source
Mon point de vue en tant que programmeur polyvalent avec une petite expérience de R: R est excellent pour la science des données, mais il est destiné aux personnes qui interprètent manuellement les données. Si vous souhaitez utiliser les résultats pour quelque chose d'automatisé, vous devez vous connecter à autre chose, et ce sera difficile à faire dans un langage spécifique à un problème comme R. Pouvez-vous créer un site Web en R? :) D'autre part, python a des bibliothèques prêtes à l'emploi pour les tâches d'analyse de données et constitue un langage de programmation généraliste qui ne vous empêche pas de faire autre chose avec. Quant à Java, il convient aux grands projets de programmation comportant des centaines de milliers à des millions de lignes de code. Si la partie science des données doit s’interfacer avec cela, il est alors logique de tout faire en Java.
Whine aléatoire: Pourquoi dois-je me connecter à chaque site StackExchange séparément?
la source
Les outils en Python sont simplement meilleurs que ceux de R. Ther R: la communauté est plutôt stagnante alors que la communauté Python évolue très rapidement. Surtout dans les outils pour la science des données.
Python fonctionne également beaucoup plus facilement avec tout ce qui l’entoure. Vous pouvez facilement parcourir le Web, vous connecter à des bases de données, etc. Cela rend le prototypage très rapide.
Et si vous avez un prototype fonctionnel et que vous vous efforcez de le rendre plus rapide ou de l'intégrer au flux de travail de l'entreprise, il est généralement réimplémenté en Java.
R a quelques outils et une visualisation soignés, mais ce n’est pas génial de construire de nouvelles choses.
la source