Ich fange gerade an, eine Anwendung für maschinelles Lernen für akademische Zwecke zu entwickeln. Ich benutze gerade R und trainiere mich darin. An vielen Orten habe ich jedoch Leute gesehen, die Python verwendet haben .
Was nutzen die Menschen in Wissenschaft und Industrie und wie lautet die Empfehlung?
machine-learning
r
python
Peter Mortensen
quelle
quelle
Antworten:
Einige wirklich wichtige Unterschiede, die Sie berücksichtigen sollten, wenn Sie R oder Python übereinander wählen :
Beide Sprachen sind also gleich gut. Abhängig von Ihrer Domain und dem Ort, an dem Sie arbeiten, müssen Sie daher die richtige Sprache auswählen. Die Technologiewelt bevorzugt normalerweise die Verwendung einer einzigen Sprache. Geschäftsanwender (Marketinganalysen, Einzelhandelsanalysen) verwenden in der Regel statistische Programmiersprachen wie R, da sie häufig schnelle Prototypen erstellen und Visualisierungen erstellen (dies ist in R schneller als in Python).
quelle
Es gibt nichts Besseres als "Python ist besser" oder "R ist viel besser als x".
Die einzige Tatsache, die ich kenne, ist, dass sich in der Branche viele Leute an Python halten, weil sie das an der Universität gelernt haben. Die Python-Community ist sehr aktiv und hat einige großartige Frameworks für ML, Data Mining usw.
Aber um ehrlich zu sein, wenn Sie einen guten C-Programmierer haben, kann er dasselbe tun wie die Leute in Python oder R, wenn Sie einen guten Java-Programmierer haben, kann er auch (fast) alles in Java tun.
Also bleib bei der Sprache, mit der du dich gut auskennst.
quelle
Einige zusätzliche Gedanken.
Die Programmiersprache 'an sich' ist nur ein Werkzeug. Alle Sprachen wurden so entwickelt, dass bestimmte Konstrukte einfacher zu erstellen sind als andere. Und die Kenntnis und Beherrschung einer Programmiersprache ist wichtiger und effektiver als die Merkmale dieser Sprache im Vergleich zu anderen.
Soweit ich sehen kann, gibt es zwei Dimensionen dieser Frage. Die erste Dimension ist die Fähigkeit, Konzepte oder Modelle schnell zu erkunden, Beweise zu erstellen und schließlich genügend Werkzeuge zur Hand zu haben, um zu untersuchen, was vor sich geht (wie statistische Tests, Grafiken, Messwerkzeuge usw.). Diese Art von Aktivität wird normalerweise von Forschern und Datenwissenschaftlern bevorzugt (ich frage mich immer, was das bedeutet, aber ich benutze diesen Begriff für seine lose Definition). Sie verlassen sich in der Regel auf bekannte und überprüfte Instrumente, die für Beweise oder Argumente verwendet werden können.
Die zweite Dimension ist die Fähigkeit, Werkzeuge, Algorithmen oder Modelle zu erweitern, zu ändern, zu verbessern oder sogar zu erstellen. Um dies zu erreichen, benötigen Sie eine geeignete Programmiersprache. Sie sind ungefähr alle gleich. Wenn Sie für ein Unternehmen arbeiten, dann hängen Sie in hohem Maße von der Infrastruktur des Unternehmens ab, die interne Kultur und Ihre Entscheidungen nehmen erheblich ab. Wenn Sie einen Algorithmus für die Produktion implementieren möchten, müssen Sie der Implementierung vertrauen. Und die Implementierung in einer anderen Sprache, die Sie nicht beherrschen, hilft Ihnen nicht viel.
Ich neige dazu, für die erste Art von Aktivität das Ökosystem zu bevorzugen. Sie haben eine großartige Community, eine Vielzahl von Tools, die beweisen, dass diese Tools wie erwartet funktionieren. Sie können auch Python, Octave (um nur einige zu nennen) in Betracht ziehen, die zuverlässige Kandidaten sind.
Für die zweite Aufgabe müssen Sie sich vorher überlegen, was Sie wirklich wollen. Wenn Sie robuste produktionsreife Tools benötigen, sind C / C ++, Java und C # die besten Kandidaten. Ich betrachte Python zusammen mit Scala und Freunden als zweiten Bürger in dieser Kategorie. Ich möchte keinen Flammenkrieg beginnen, das ist nur meine Meinung. Aber nach mehr als 17 Jahren als Entwickler ziehe ich einen strengen Vertrag und mein Wissen der Freiheit vor, alles zu tun, was Sie sich vorstellen (wie es bei vielen dynamischen Sprachen der Fall ist).
Persönlich möchte ich so viel wie möglich lernen. Ich entschied, dass ich den harten Weg wählen muss, was bedeutet, alles von Grund auf neu zu implementieren. Ich benutze R als Vorbild und Inspiration. Es hat große Schätze in Bibliotheken und viel Erfahrung gebrannt. Allerdings ist R als Programmiersprache für mich ein Albtraum. Deshalb habe ich mich für Java entschieden und keine zusätzliche Bibliothek verwendet. Das liegt nur an meiner Erfahrung und an nichts anderem.
Wenn Sie Zeit haben, ist das Beste, was Sie tun können, etwas Zeit mit all diesen Dingen zu verbringen. Auf diese Weise verdienen Sie sich die bestmögliche Antwort, die auf Sie zugeschnitten ist. Dijkstra sagte einmal, dass die Werkzeuge die Art und Weise beeinflussen, wie Sie denken. Daher ist es ratsam, Ihre Werkzeuge zu kennen, bevor Sie sie modellieren lassen, wie Sie denken. Mehr darüber können Sie in seiner berühmten Zeitung The Humble Programmer lesen
quelle
Ich würde hinzufügen, was andere bis jetzt gesagt haben. Es gibt keine eindeutige Antwort darauf, dass eine Sprache besser ist als die andere.
Trotzdem hat R eine bessere Community für die Erforschung und das Lernen von Daten. Es verfügt über umfangreiche Visualisierungsmöglichkeiten. Python hingegen hat sich seit Einführung der Pandas im Umgang mit Daten verbessert. Die Lern- und Entwicklungszeit ist in Python sehr viel kürzer als in R (R ist eine niedrige Sprache).
Ich denke, es kommt letztendlich auf das Ökosystem an, in dem Sie sich befinden, und auf Ihre persönlichen Vorlieben. Weitere Details zu diesem Vergleich finden Sie hier .
quelle
Es gibt keine Standardsprache, mit der jedes datenbezogene Problem gelöst werden kann. Die Wahl der Sprache hängt vom Kontext des Problems und der Datenmenge ab. Wenn Sie an einem Arbeitsplatz arbeiten, müssen Sie sich an das halten, was sie verwenden.
Ich persönlich benutze R aufgrund seiner Visualisierungsbibliotheken und seines interaktiven Stils häufiger als Python. Aber wenn ich mehr Leistung oder strukturierten Code benötige, verwende ich definitiv Python, da es einige der besten Bibliotheken wie SciKit-Learn, Numpy, Scipy usw. enthält. Ich verwende sowohl R als auch Python in meinen Projekten austauschbar.
Wenn Sie also mit der Arbeit in den Datenwissenschaften beginnen, empfehle ich Ihnen, beides zu lernen, und es ist nicht schwierig, da Python auch eine ähnliche Schnittstelle zu R mit Pandas bietet .
Wenn Sie mit viel größeren Datenmengen zu tun haben, können Sie sich mit Java erstellten Ökosystemen (Hadoop, Pig, Hbase usw.) nicht entziehen.
quelle
Es gibt keine "bessere" Sprache. Ich habe beide ausprobiert und bin mit Python vertraut, daher arbeite ich nur mit Python. Obwohl ich noch etwas lerne, bin ich mit Python bis jetzt noch keiner Straßensperre begegnet. Das Gute an Python ist, dass die Community zu gut ist und Sie im Internet leicht eine Menge Hilfe bekommen können. Ansonsten würde ich sagen, geh mit der Sprache, die du magst, nicht zu der, die die Leute empfehlen.
quelle
Nach meiner Erfahrung hängt die Antwort vom jeweiligen Projekt ab. Für die reine Forschung bevorzuge ich R aus zwei Gründen: 1) eine große Vielfalt von Bibliotheken und 2) ein Großteil der datentechnischen Literatur enthält R-Samples.
Wenn das Projekt eine interaktive Oberfläche erfordert, die von Laien verwendet werden soll, habe ich festgestellt, dass R zu eingeschränkt ist. Shiny ist ein großartiger Start, aber noch nicht flexibel genug. In diesen Fällen beginne ich damit, meine R-Arbeit nach Python oder js zu portieren.
quelle
Ein Problem, das bei allen anderen Antworten nicht behoben werden kann, ist die Lizenzierung .
Die meisten der oben genannten wunderbaren R-Bibliotheken sind GPL (zB ggplot2 , data.table ). Dies verhindert, dass Sie Ihre Software in proprietärer Form vertreiben.
Obwohl viele Nutzungen dieser Bibliotheken keine Verbreitung der Software implizieren (z. B. um Modelle offline zu trainieren), kann die GPL Unternehmen von sich aus davon abhalten, sie zu nutzen. Zumindest nach meiner Erfahrung.
Im Python-Bereich hingegen verfügen die meisten Bibliotheken über geschäftsfreundliche Distributionslizenzen wie BSD oder MIT.
In der Wissenschaft sind Lizenzierungsfragen normalerweise keine Fragen.
quelle
Den Kommentaren ist nicht viel hinzuzufügen. Die einzige Sache ist vielleicht diese Infografik, die R mit Python zu datenwissenschaftlichen Zwecken vergleicht. Http://blog.datacamp.com/r-or-python-for-data-analysis/
quelle
Eine echte Herausforderung, der ich mich mit R gegenübersah, sind verschiedene Pakete, die mit verschiedenen Versionen kompatibel sind. Sehr viele R-Pakete sind für die neueste Version von R nicht verfügbar Ausführung..
quelle
Ich habe R nicht ausprobiert (naja, ein bisschen, aber nicht genug, um einen guten Vergleich anzustellen). Hier sind jedoch einige der Stärken von Python:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(für Matrixmultiplikation), ...quelle
Ich bevorzuge Python gegenüber R, da Python eine vollständige Programmiersprache ist, sodass ich maschinelle Lernaufgaben wie das Sammeln von Daten über einen in Python geschriebenen HTTP-Server ausführen, erweiterte ML-Aufgaben ausführen und die Ergebnisse dann online veröffentlichen kann. Dies kann alles in Python erfolgen. Ich fand R tatsächlich schwieriger zu erlernen und die Gewinne für das Erlernen von Python sind viel höher, da es für so ziemlich jede Programmieraufgabe verwendet werden kann.
quelle
R: R ist das Open Source-Gegenstück. die traditionell in Wissenschaft und Forschung eingesetzt wurde. Aufgrund seiner Open-Source-Natur werden die neuesten Techniken schnell veröffentlicht. Über das Internet ist eine Vielzahl von Dokumentationen verfügbar, und dies ist eine sehr kostengünstige Option. Python: Mit der Entstehung als Open-Source-Skriptsprache hat die Verwendung von Python im Laufe der Zeit zugenommen. Heutzutage gibt es Sportbibliotheken (Numpy, Scipy und Matplotlib) und Funktionen für nahezu jede statistische Operation / Modellbildung, die Sie möglicherweise durchführen möchten. Seit der Einführung von Pandas hat es sich bei Operationen mit strukturierten Daten als sehr stark erwiesen.
Python-Code
Bibliothek importieren
Importieren Sie andere notwendige Bibliotheken wie Pandas, Numpy ...
von sklearn import linear_model
Laden von Zug- und Testdatensätzen
Identifizieren Sie Feature und Antwortvariable (n) und Werte müssen numerische und numpy Arrays sein
x_train = Eingabevariablen_Werte_Trainings_Datensätze y_train = Zielvariablen_Werte_Trainings_Datensätze x_test = Eingabevariablen_Werte_Test_Datensätze
Erstellen Sie ein lineares Regressionsobjekt
linear = linear_model.LinearRegression ()
Trainiere das Modell mit den Trainingssets und überprüfe die Punktzahl
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Gleichungskoeffizient und Achsenabschnitt
print ('Coefficient: \ n', linear.coef_) print ('Intercept: \ n', linear.intercept_)
Ausgabe vorhersagen
predicted = linear.predict (x_test) R Code
Laden von Zug- und Testdatensätzen
Identifizieren Sie Feature und Antwortvariable (n) und Werte müssen numerische und numpy Arrays sein
x_train <- Eingabevariablen_Werte_Training_Datensätze y_train <- Zielvariablen_Werte_Training_Datensätze x_test <- Eingabevariablen_Werte_Test_Datensätze x <- cbind (x_train, y_train)
Trainiere das Modell mit den Trainingssets und überprüfe die Punktzahl
linear <- lm (y_train ~., data = x) Zusammenfassung (linear)
Ausgabe vorhersagen
vorhergesagt = vorhergesagt (linear, x_test)
quelle
Ich glaube nicht, dass Python eine Point-Click-GUI hat , die es in SPSS und SAS verwandelt. Mit denen herumzuspielen macht echt Spaß.
quelle
Ich habe dieses Bild in einem LinkedIn-Post bekommen. Wann immer ich Zweifel habe, Python oder R zu verwenden, schaue ich hinein und es erweist sich als sehr nützlich.
quelle