In der Stellenbeschreibung für Datenwissenschaftler, die nach Python / Java-Erfahrung fragen und R ignorieren, sehe ich oft. Nachstehend eine persönliche E-Mail, die ich vom Chief Data Scientist eines Unternehmens erhalten habe, für das ich mich über linkedin beworben habe.
X, vielen Dank für Ihre Kontaktaufnahme und Ihr Interesse. Sie haben gute analytische Fähigkeiten. Alle unsere Datenwissenschaftler müssen jedoch über gute Programmierkenntnisse in Java / Python verfügen, da wir eine Internet- / Mobilorganisation sind und alles, was wir tun, online ist.
Obwohl ich die Entscheidung des leitenden Datenwissenschaftlers respektiere, kann ich mir kein klares Bild darüber machen, welche Aufgaben Python ausführen kann, die R nicht ausführen kann. Kann mir jemand etwas ausdenken? Ich bin eigentlich sehr daran interessiert, Python / Java zu lernen, vorausgesetzt, ich erhalte ein bisschen mehr Details.
Edit: Ich fand eine interessante Diskussion über Quora. Warum ist Python eine Sprache der Wahl für Datenwissenschaftler?
Edit2: Blog von Udacity über Sprachen und Bibliotheken für maschinelles Lernen
quelle
Antworten:
So können Sie mit dem Rest der Codebasis integrieren. Offenbar verwendet Ihr Unternehmen eine Mischung aus Java und Python. Was werden Sie tun, wenn eine kleine Ecke der Site maschinelles Lernen erfordert? Daten mit einer Datenbank oder einem Cache weitergeben, auf R ablegen und so weiter? Warum nicht einfach alles in derselben Sprache machen? Es ist schneller, sauberer und einfacher zu warten.
Kennen Sie Online-Unternehmen, die ausschließlich mit R arbeiten? Ich auch nicht...
Alles, was Java sagte, ist die letzte Sprache, in der ich Datenwissenschaft betreiben würde.
quelle
Es kann viele Gründe geben wie:
Flexibilität der Belegschaft: Ein Java / Python-Programmierer kann problemlos in andere Aufgaben oder Projekte versetzt werden.
Verfügbarkeit der Kandidaten: Es gibt viele Java / Python-Programmierer. Sie möchten keine neue Programmiersprache einführen, um später festzustellen, dass es keine qualifizierten Mitarbeiter gibt oder diese einfach zu teuer sind.
Integration und ETL: Manchmal ist es der schwierigste Teil des Projekts, die Daten in der richtigen Qualität zu erhalten. Daher ist es selbstverständlich, dieselbe Sprache wie die anderen Systeme zu verwenden.
Geschäftsmodelldefinition: Die meisten Geschäftsregeln und Geschäftsmodelle sind bereits in diesen Sprachen verfasst.
Einfach die Dinge einfach halten. Es ist schon schwer genug, mit den Technologien auf dem neuesten Stand zu sein. Eine vielfältige Sprachbasis kann chaotisch sein. R dafür, Ruby dafür, Scala, Clojure, F #, Swift, Dart ... Sie brauchen möglicherweise verschiedene Server, verschiedene Pfade, eine Hölle, um zu verwalten. Alle haben ihre eigenen IDEs mit Tools und Plugins (nicht immer kostenlos). Sehen Sie sich einige Punkte von Onkel Bob über die Auswahl von Sprachen und neue Technologien an
Selbst wenn Sie einen Produktivitätsvorteil von 5% - 15% bei der Verwendung von R für die jeweilige Aufgabe haben, bevorzugen sie möglicherweise ein Werkzeug, das die Aufgabe einfach erledigt, auch wenn es nicht auf die effizienteste Weise ausgeführt wird.
quelle
.csv
Dateien aufgewendet. Zu diesem Zweck ist R das am besten geeignete Tool auf dem Markt. Verfügbarkeit von Kandidaten: Die Tatsache, dass es mehr Java-Programmierer als R-Programmierer gibt, bedeutet nicht, dass Sie einen R-Kandidaten verwerfen müssen, wenn Sie einen haben. Es spielt keine Rolle, wie der Wissenschaftler seine Aufgaben ausführt, solange er lesbaren Code bereitstellt, der von einigen Servern (oder anderen Dingen, die das Unternehmen ausführt) ausgeführt werden kann.Es ist im Allgemeinen richtig, dass für rein datenwissenschaftliche und statistische Übungen R die besten und schnellsten (insbesondere bei Verwendung des
data.table
Pakets) Tools und Methoden bietet, die ansonsten in Python schwerer zu implementieren wären (ich nehme an, mit Python meinen wir alle Pandas) ). Tatsächlich verwenden die meisten Datenwissenschaftler R, um ihre Modelle und Berechnungen durchzuführen oder nur um zu sehen, wie sich Daten verhalten.Sobald die Übung abgeschlossen ist, ist es an der Zeit, sie den übrigen Personen zur Verfügung zu stellen, die sie verwenden müssen (z. B. um sie einzusetzen). Zu diesem Zweck wird es häufig bevorzugt, den Code aus zwei Hauptgründen in Python einzureichen:
Das oben Gesagte, es ist immer noch wahr, dass man R-Code leicht in jede andere Sprache übersetzen kann, vorausgesetzt, dass Methoden, Bibliotheken und Pakete verfügbar sind (in Python sind die meisten davon vorhanden, so dass das überhaupt kein Problem ist). Viele Infrastrukturen und Datenbanken unterstützen den zugrunde liegenden R-Code, daher ist die Portabilität kein wirkliches Problem, insbesondere wenn man nur die Ergebnisse der Berechnungen einreichen muss (insofern sieht sowieso niemand den zugrunde liegenden Code wirklich).
Java ist für die reine Datenwissenschaft selbst kaum von Nutzen (obwohl die Stanford University, soweit ich mich erinnere, eine Sammlung von maschinell lernenden NLP-Bibliotheken in Java hat - bitte überprüfen Sie dies). Der einzige Grund, warum dies erforderlich sein kann, ist, dass der Rest des Unternehmens es in großem Umfang nutzt und es nicht durch etwas Neues ersetzen möchte.
quelle
data.table
. scikit-learn ist, wie Sie bereits erwähnt haben, ein weiteres Beispiel, aber es gibt noch viel mehr, je nach vorliegendem Fall.Ich habe einige Unternehmen gesehen, die den Titel Data Scientist für Rollen vom Typ "Data Engineer" verwendet haben. Besonders im Big-Data-Bereich.
Wenn das Unternehmen Hadoop oder ein verteiltes Framework wie Spark für die Analyse verwendet, sind Java oder Python (oder wahrscheinlich Scala) die Sprachen, die am sinnvollsten sind.
quelle
Java
Ich würde mit den anderen Plakaten auf der Java-Frage nicht einverstanden sein müssen. Es gibt bestimmte noSQL-Datenbanken (wie Hadoop), die man benötigt, um Mapreduce-Jobs in Java zu schreiben . Jetzt können Sie mit HIVE fast dasselbe Ergebnis erzielen.
Python
Die Python / R-Debatte geht weiter. Beide Sprachen sind erweiterbar, sodass möglicherweise beide dieselbe Verarbeitungsfähigkeit haben. Ich kenne nur R und meine Pythonkenntnisse sind recht oberflächlich. Als Inhaber eines Kleinunternehmens möchten Sie nicht zu viele Tools in Ihrem Unternehmen haben, da dies sonst einen allgemeinen Mangel an Tiefe und Schwierigkeiten bei der Unterstützung der Tools zur Folge hat. Ich denke, es wird auf die Tiefe des Werkzeugwissens im Team ankommen. Wenn sich das Team auf Python konzentriert, ist es sinnvoll, einen anderen Python-Datenwissenschaftler einzustellen, da dieser sich mit der vorhandenen Codebasis und dem Code für historische Experimente befassen kann.
quelle
Zumindest für mein aktuelles Team (ca. 80 Datenwissenschaftler und Ingenieure) haben wir keine solche Präferenz. Die Hälfte der Datenwissenschaftler verwendet R und die andere Hälfte Python. Viele können beides einprogrammieren. Wir setzen Python- und R-Code in der Produktion ein.
Ich glaube, keiner unserer Datenwissenschaftler verwendet Java. Wenn sie mit Big Data umgehen müssen, können sie SparkSQL oder PySpark verwenden. Das Data Engineering-Team verwendet eine Mischung aus Java / Scala / Python / Go.
Wenn Sie einer der wenigen Data-Mitarbeiter in einem kleinen Unternehmen sind, kann ich verstehen, warum bestimmte Sprachkenntnisse erforderlich sind, damit Sie sowohl Data Science als auch Engineering betreiben können. Aber ich denke, die meisten kleinen Unternehmen werden nicht genügend Daten haben, die Python oder R in der Produktion nicht verarbeiten können.
quelle
Mein Standpunkt als Universalprogrammierer mit ein wenig R-Erfahrung: R eignet sich hervorragend für die Datenwissenschaft, richtet sich jedoch an Personen, die Daten manuell interpretieren. Wenn Sie die Ergebnisse für etwas Automatisiertes verwenden möchten, müssen Sie eine Schnittstelle zu etwas anderem herstellen, und in einer problemspezifischen Sprache wie R ist es schwierig, etwas anderes zu tun. Können Sie eine Website in R erstellen? :) Auf der anderen Seite hat Python fertige Bibliotheken für Data-Science-Sachen und ist eine Allzweck-Programmiersprache, die Sie nicht daran hindert, etwas anderes damit zu machen. Java eignet sich für große Programmierprojekte mit Hunderttausenden bis Millionen von Codezeilen. Wenn der Data Science-Teil eine Schnittstelle dazu haben muss, kann es sinnvoll sein, alles in Java zu tun.
Zufälliges Winseln: Warum muss ich mich bei jeder StackExchange-Site separat anmelden?
quelle
Die Tools in Python sind einfach besser als in R. Die R-Community steht ziemlich still, während sich die Python-Community sehr schnell entwickelt. Besonders in Tools für Data Science.
Auch Python funktioniert mit allem, was es umgibt, viel einfacher. Sie können problemlos im Web surfen, eine Verbindung zu Datenbanken herstellen usw. Das macht das Prototyping sehr schnell.
Und wenn Sie einen funktionierenden Prototyp haben und ihn schneller machen oder in den Unternehmens-Workflow integrieren möchten, wird er normalerweise in Java neu implementiert.
R hat ein paar nette Tools und Visualisierungen, aber es ist nicht so toll, neue Sachen darin zu bauen.
quelle