„R ή Python;“  – Win Vector LLC

„R ή Python;“ – Win Vector LLC

März 2, 2023 0 Von admin

Έχω δει πολλά καυτά σχόλια για το αν κάποιος πρέπει να κάνει επιστήμη δεδομένων στο R ή στην Python. Θα σχολιάσω γενικά το θέμα και στη συνέχεια θα προσθέσω το δικό μου μικρό σημείο αναφοράς για τη μυωπική κεφαλή γραναζιών.

Θα πηδήξω: Εάν η εκμάθηση της γλώσσας είναι το μεγάλο βήμα: τότε είστε αρχάριοι στον τομέα της επιστήμης δεδομένων. Επομένως, η σωστή επιλογή είναι: συνεργαστείτε με άλλους και χρησιμοποιήστε τα εργαλεία που μπορούν να σας διδάξουν περισσότερο.

Μετά από αυτό, υπάρχουν άλλες σκέψεις: με τι/ποιον εργάζεστε ή με ποιον ενσωματώνεστε. Εάν εργάζεστε με στατιστικολόγους, πιθανότατα θα θέλουν τον R. Εάν εργάζεστε με μηχανικούς λογισμικού, πιθανότατα θα θέλουν Python. Εάν πράγματι προσθέτετε αξία όσον αφορά τη μετάφραση των επιχειρηματικών αναγκών, την επιλογή μοντέλων μηχανικής εκμάθησης, μεθόδων οργάνωσης δεδομένων, σχεδίασης πειραμάτων, ελέγχου της μεροληψίας, μείωσης της διακύμανσης: τότε ο προγραμματισμός είναι το λιγότερο από τις ανησυχίες σας.

Και το κομμάτι για το οποίο ήθελα πραγματικά να γράψω από την αρχή: τι γίνεται με τα εργαλεία;

Η απάντηση είναι: τόσο η Python όσο και η R είναι γλώσσες αργής ερμηνείας. Για κανένα από τα δύο δεν μπορείτε να περιμένετε την εκτέλεση μη τετριμμένου κώδικα ανά σειρά ή ανά παρουσία δεδομένων. Αυτό έρχεται σε αντίθεση με την Java, η οποία έχει γρήγορο διερμηνέα και μπορεί να καθορίσει λειτουργίες σε στιγμιότυπα αντί να βασίζεται σε διανυσματικό συμβολισμό. Η διανυσματική μεθοδολογία καθορίζει λειτουργίες σε στήλες, οι οποίες εφαρμόζονται ομοιόμορφα σε όλες τις γραμμές από το υποκείμενο σύστημα δεδομένων.

Έτσι μπορεί κανείς να ρωτήσει: είναι η διανυσματοποιημένη Python γρήγορη ή αργή σε σύγκριση με τη διανυσματική R;

Κατά τη γνώμη μου, οι προεπιλεγμένες υλοποιήσεις και των δύο γλωσσών είναι στην πραγματικότητα αργές, ακόμη και όταν είναι διανυσματικές. Ωστόσο, κάθε γλώσσα έχει πρόσβαση σε ένα πολύ γρήγορο εξειδικευμένο σύστημα πλαισίων δεδομένων. Στο R, είναι κάτω από τα χέρια πίνακας δεδομένων. Στην Python, σκέφτομαι ότι μπορεί να είναι πολικός.

Ορισμένα σημεία αναφοράς που εμπιστεύομαι σε αυτό είναι εδώ.

Μόλις πρόσφατα άρχισα να πειραματίζομαι με την κατασκευή ενός κινητήρα Polars για το άλγεβρα δεδομένων (η άλγεβρα δεδομένων είναι ένα σύστημα για το χειρισμό δεδομένων στη μνήμη ή τη δημιουργία του ισοδύναμου SQL για βάσεις δεδομένων). Η άλγεβρα δεδομένων προοριζόταν πάντα να έχει πολλαπλές μηχανές δεδομένων. Ξεκίνησα και εγκατέλειψα μερικές άλλες μηχανές άλγεβρας δεδομένων, καθώς το σύστημα στόχος ήταν στην πραγματικότητα πιο αργό και λιγότερο εκφραστικό από τον τρέχοντα κινητήρα των Panda. Πολλές από τις μηχανές δεδομένων «είμαστε εξαιρετικοί σε κλίμακα» πνίγονται σε κοινές εργασίες εφαρμογών, όπως η εφαρμογή υπολογιστικών περιλήψεων σε ομάδες και είναι γρήγοροι σε μη ενδιαφέρουσες εργασίες μόνο για σημεία αναφοράς.

Ο νέος μου προσαρμογέας Polars δεν είναι ολοκληρωμένος, αλλά η ανάπτυξη ενάντια στο Polars ήταν γρήγορη, ευχάριστη και αρκετά εντυπωσιακή.

Ακολουθούν τα τελευταία μου αποτελέσματα σε μια απλή εργασία ομαδοποιημένης εφαρμογής στην Python και στο R:

μέθοδος χρόνος (δευτερόλεπτα/τρέξιμο) Γλώσσα
Πάντα 0,247 Πύθων
data_algebra_Pandas 0,362 Πύθων
πολικός 0,105 Πύθων
Polars (τεμπέλης) 0,110 Πύθων
data_algebra_Polars 0,111 Πύθων
βάση_R 5.153 R
πίνακας δεδομένων 0,099 R
dplyr 1.110 R
dtplyr 0,144 R
rqdatatable 0,215 R

Το πιο σημαντικό: η ίδια ταχύτητα είναι διαθέσιμη τόσο σε R όσο και σε Python, εάν χρησιμοποιείτε το κατάλληλο πακέτο.

Σημείωση στο R, από τα πακέτα που δοκιμάστηκαν, μόνο αυτά που βασίζονται στο data.table (data.table, dtplyr και rqdatatable) είναι γρήγορα (επίτευξη χρονισμών δευτερεύουσας εργασίας). Στην Python τα πράγματα είναι λίγο καλύτερα, αλλά παρατηρήστε ότι οι Polars και τα πακέτα που χρησιμοποιούν Polars τραβούν μπροστά από την ομάδα. (Και φαίνεται ότι τα Panda εκτελούν πολύ πιο αργά σε μη τετριμμένες εργασίες με περισσότερες στήλες.)

Ο σκοπός της άλγεβρας δεδομένων είναι να έχει μια ενοποιημένη Σημειογραφία σχεσιακού στυλ Codd για χειρισμό δεδομένων που μπορεί να χρησιμοποιηθεί τόσο σε κοινούς κινητήρες πλαισίων δεδομένων (όπως τα Panda στη μνήμη) όσο και να δημιουργήσει SQL. Πάντα προοριζόταν ως ένα σύστημα για τον καθαρό προσδιορισμό μετασχηματισμών δεδομένων και είναι μια γλώσσα για τη σύνθεση μετασχηματισμών. Τα Panda, οι Polars και η SQL είναι πραγματοποιήσεις τέτοιων μετασχηματισμών σε δεδομένα. Η δυνατότητα εναλλαγής της υλοποίησης κατά το χρόνο εκτέλεσης είναι ένα μεγάλο πλεονέκτημα, μπορεί κανείς να εκτελέσει τον ίδιο κώδικα τοπικά ή σε κλίμακα σε μια απομακρυσμένη βάση δεδομένων. Η προσθήκη Polars ως μηχανή άλγεβρας δεδομένων είναι μια συναρπαστική ευκαιρία, μια γρήγορη συνειδητοποίηση αυτού που θεωρώ ότι είναι μια πολύ βολική και ισχυρή σημειογραφία.

(Κώδικας αναφοράς Python εδώ, Κωδικός αναφοράς R εδώ)

Κατηγορίες: Γνώμη

Με ετικέτα: pydata python R rstats

John Mount