R versus Python

Interessantes ohne bestimmtes Thema!

Moderator: student

consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: R versus Python

Beitrag von consuli »

EDi hat geschrieben:
Die von consuli angesprochenen Schnittstellen von R und Python sollten on topic sein.
Das stimmt. Schnittstellen nun hier weiter.
R aus Python
Python aus R
Irmgard.
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: R versus Python

Beitrag von consuli »

bigben hat geschrieben: Bin gespannt, wie Deine Reise weiter geht und würde mich auch in einem R Forum über zwischenzeitliche Reiseberichte aus dem Pythonland freuen.
(...)
Language Wars helfen keinem. Ich wünsche mir da auch im Forum Offenheit und keine Denk- oder Sprechverbote.
Da aus dem Unternehmensforum nun das Forum Maschinelles Lernen wurde und Maschinenlernverfahren sehr stark mit Python besetzt sind, muss ich für eine qualitativ hochwertige Antwort ja fast zwangsläufig Python lernen. ;)

Als erstes werde ich mich mal mit bigben's Python Missing Problem auseinandersetzen.
What is python's equivalent of R's NA?
To be more specific: R has NaN, NA, NULL, Inf and -Inf. NA is generally used when there is missing data. What is python's equivalent?
Berechtigte Frage. Dass jeder Datentyp auch den Wert NA haben kann zeugt von Rs tiefer Verwurzelung in der statistischen Datananalyse. Wie lautet die akzeptierte Antwort darauf?
Scikit-learn doesn't handle missing values currently. For most machine learning algorithms, it is unclear how to handle missing values, and so we rely on the user of handling them prior to giving them to the algorithm. Numpy doesn't have a "missing" value. Pandas uses NaN, but inside numeric algorithms that might lead to confusion.
http://stackoverflow.com/questions/2865 ... t-of-rs-na
Anscheinend gibt es in Numpy einen Datenwert nan und in Pandas einen NaN. Das ist ungefähr so elegant gehandhabt wie die Objektorientierung in R, nur dass mich der Umgang mit fehlenden Werten sehr viel mehr interessiert als der mit Objektorientierung. Maschinenlernen ohne NA-Daten? Muss ich denn alles selbst machen? Ich kenne mich nicht wirklich aus, aber aus der Außenseiterperspektive wirkt das alles sehr aufgepfropft und unharmonisch mit diesen Datenverarbeitungsmodulen.
Ich glaube, es könnte sich so darstellen:
Numpy Arrays haben keinen Missing Value. Daher wird NaN (1/0 -> NaN) öfter als Numpy-Missing missbraucht.
Eigentlich ist das aber gar nicht notwendig. Denn Basic-Python kennt bereits den NULL-Wert "None".
Irmgard.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: R versus Python

Beitrag von bigben »

FWIW noch eine R und Python Gegenüberstellung ganz in bunt von Datacamp:
http://blog.datacamp.com/wp-content/upl ... -216-2.png
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: R versus Python

Beitrag von consuli »

Aus http://blog.datacamp.com/wp-content/upl ... -216-2.png:
R is easy to learn, cause its learning curve is steep. (...) Python is easy to learn cause its learning curve is flat.
:?

Aber sonst sehr nett zu lesen, da tabellarische Synopse. Vielen Dank, bigben.

Hier noch eine andere ganz nette R, Python, SAS Synopse. Nur dem SAS kann ich retrospektive wirklich fast nix mehr abgewinnen.
Irmgard.
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: R versus Python

Beitrag von consuli »

Zwischenbericht Python Ausflug

Installation
Die Installation einer numerischen Python Entwicklungsumgebung unter Windows ist komplizierter als die Installation R/R-Studio. Am besten greift man auf die bei Data Scientists beliebte Anaconda Distribution zurück. Diese One-Click Windows Exe enthält den CPython Interpreter (nach Buch incl. Bytecode Compiler), den Ipython Editor und Spyder - eine IDE sehr ähnlich wie R-Studio - sowie diverse Python Bibliotheken, die man als Datenanalyst typischer Weise benötigt.

Editoren/ IDEs
IPython/ Jupyther bieten eine Notebook-Entwicklungsumgebung. D.h. man hat ein wenige Zeilen grosses Codefenster. Direkt darunter erscheint der Output. Danach der nächste Code/Output Block, usw. Der Notebookstyle scheint mir für finale Endauswertungen sehr geeignet zu sein, wenn ich beweisen will, dass die Grafik XY aus dem Code VW kommt (Stichwort reproducible research). Oder mit Beamer kann man während einer Besprechung schnell ein paar Auswertungen zaubern, um der Diskussion auf Fakten statt Hypothesen zu gründen. Aber für ein längeres Datenaufbereitungsprogramm finde ich Notebooks ungeeignet. Ausserdem waren die Fehlercodes weniger präzise. Ipython lässt sich auch für diverse andere Sprachen als Editor verwenden, unter anderem R. Über R Magic lassen sich R Programme mit kurzen %%R Annotationen lückenlos in Python Code einbetten. Ausserdem soll man mit Ipython/ Jupyther ein Python Cluster betreiben können. Beides habe nutze ich jedoch bis jetzt nicht.

Spyder hat ähnlich wie R-Studio ein Codefenster, einen Objektexplorerfenster und ein Shell-Konsolen-Fenster, dass die Ergebnisse anzeigt. Code lässt per One-Klick ausführen. Inwie weit es über Python auch Cython und C++ Programmierung unterstützt, habe ich noch nicht rausgefunden.

Darüber hinaus lässt sich Python mit jedem üblichen Editor coden. Viele Editoren (Emacs, ...) bringen bereits Python Language Erkennung mit. Die erstellte Codedatei mit dem Dateikürzel .py lässt in der Betriebssystem Shell (EDI/Unix Wording Terminal) mit dem Befehl "python code.py" ausführen. Die Python Fehlermeldungen sind genauer und konkreter als bei R. Wenn mein Programm eine library aufruft, die wieder eine andere Library und die wieder eine, vollzieht die Fehlermeldung den ganzen Weg des Aufrufs komplett nach, was natürlich sehr hilfreich ist. Ausserdem ist die Konole etwas agiler als Spyder. Deshalb benutzen einige Numerical Python Programmierer nur Editor und Konsole.
Irmgard.
Antworten