Θέμα Jannah Η άδεια δεν είναι επικυρωμένη. Μεταβείτε στη σελίδα επιλογών θέματος για να επικυρώσετε την άδεια χρήσης, Χρειάζεστε μία άδεια για κάθε όνομα τομέα.

Κατασκευή μιας υπολογιστικής μηχανής που υποστηρίζεται από το Wolfram Mathematica χρησιμοποιώντας Python

Πώς έφτιαξα μια μηχανή τύπου Wolfram Mathematica χρησιμοποιώντας Python

Θέλετε να δημιουργήσετε ένα περιβάλλον προγραμματισμού που μπορεί να επεξεργάζεται συμβολικές εξισώσεις, να αναλύει δεδομένα και να κατασκευάζει γραφήματα όπως το Wolfram Mathematica; Χρησιμοποιώντας Python και μια σειρά από ανοιχτές βιβλιοθήκες, μπορείτε να αναπτύξετε μια «υπολογιστική μηχανή» που συνδυάζει την ευελιξία του κώδικα με τη δύναμη της συμβολικής υπολογιστικής. Θα σας καθοδηγήσουμε βήμα προς βήμα - από την επιλογή των κατάλληλων δομών, μέσω του σχεδιασμού της διεπαφής, έως την εφαρμογή μαθηματικών αλγορίθμων και συμβολικών μοντέλων - μέχρι να φτάσετε σε ένα διαθέσιμο πρωτότυπο. Σε αυτό το άρθρο, θα μάθετε για τα βασικά εργαλεία, τις προκλήσεις που ενδέχεται να αντιμετωπίσετε και πώς να τις ξεπεράσετε για να διασφαλίσετε ότι η μηχανή σας δεν είναι απλώς ένα πιλοτικό έργο, αλλά μια πραγματική πλατφόρμα που μπορεί να χρησιμοποιηθεί και να επεκταθεί αργότερα.

python-logo-charts Δημιουργία μιας υπολογιστικής μηχανής με υποστήριξη Wolfram Mathematica χρησιμοποιώντας Python

Πάντα μου άρεσε η ιδέα των μαθηματικών, αλλά το να τα κάνω με το χέρι ήταν διαφορετικό. Η νοητική μου CPU φαινόταν να φτάνει το 100% κατά τους χειροκίνητους υπολογισμούς. Οι χειροκίνητες αριθμομηχανές είναι μια χαρά, αλλά οι βιβλιοθήκες Python είναι καλύτερες για τις ποσοτικές μου εξερευνήσεις.

Χάρη στην Python, μπόρεσα να δημιουργήσω μια τοπική, αυτο-φιλοξενούμενη λύση που θα μπορούσε να ανταγωνιστεί το Wolfram Alpha ή άλλα ακριβά ιδιόκτητα πακέτα. Ας ξεκινήσουμε.

Πίνακας περιεχομένων

SymPy: Συμβολικά Μαθηματικά

 

 

sympy-pascal-s-triangle Κατασκευή μιας μηχανής υπολογισμού με δυνατότητα Wolfram Mathematica χρησιμοποιώντας Python

Αυτό που ξεχώριζε το Wolfram Alpha από τις παραδοσιακές αριθμομηχανές όταν πρωτοεμφανίστηκε ήταν η δυνατότητα εκτέλεσης συμβολικών υπολογισμών, όπως σε εγχειρίδια άλγεβρας ή λογισμού, και στη συνέχεια η Wolfram Alpha να τους λύνει για εσάς. Μου φάνηκε σχεδόν μαγικό. Σκέφτηκα να έχω το δικό μου αντίτυπο για να το τρέξω στον δικό μου υπολογιστή, αλλά η απόκτηση ενός αντιγράφου του Mathematica από το Wolfram ήταν ακριβή, ακόμη και για ένα προσωπικό αντίγραφο.

Γι' αυτό το Simbi τράβηξε την προσοχή μου. Ενώ προγράμματα όπως το Mathematica ή το Maple μπορεί να κοστίζουν εκατοντάδες δολάρια, το Simbi είναι δωρεάν. Βασίζεται επίσης στην Python. Επειδή είχα προηγούμενη εμπειρία με την Python, μπόρεσα να μάθω εύκολα το Simbi.

Το Simpy πραγματικά ξεχωρίζει σε διαδραστική λειτουργία, όπως το IPython ή το Jupyter. Η δυνατότητα άμεσης λήψης σχολίων είναι συναρπαστική.

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

NumPy, πάντα, SciPy: Στατιστικά

pandas-tips-head Δημιουργία υπολογιστικής μηχανής με δυνατότητες Wolfram Mathematica χρησιμοποιώντας Python

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

μουδιασμένος Είναι μια βιβλιοθήκη για εργασία με αριθμητικούς πίνακες. Είναι χρήσιμη για τη δημιουργία πολυδιάστατων πινάκων. Μια απλή λίστα αριθμών σχηματίζει μια γραμμή. Ένας δισδιάστατος πίνακας είναι παρόμοιος με έναν πίνακα με γραμμές και στήλες. Στο NumPy, οι πίνακες ορίζονται από τους άξονές τους. Αυτό ορίζει τον πίνακα. Δεδομένου ότι οι πράξεις πίνακα χρησιμοποιούνται ευρέως στη γραμμική άλγεβρα και χρησιμοποιούνται ευρέως στην επιστήμη, συμπεριλαμβανομένης της στατιστικής, αυτό ανοίγει το NumPy σε ένα ευρύ φάσμα εφαρμογών.

Το NumPy περιλαμβάνει ορισμένες βασικές πράξεις περιγραφικής στατιστικής, όπως τον αριθμητικό μέσο, ​​τη διάμεσο και την τυπική απόκλιση. Μπορείτε να εκτελέσετε υπολογισμούς με αυτούς τους πίνακες, κάτι που κανονικά θα απαιτούσε επανάληψη σε ένα τυπικό πρόγραμμα Python. Η εφαρμογή αυτών των πράξεων θα ήταν κουραστική και απαιτητική σε απόδοση.

Παρά τη χρησιμότητα του NumPy, χρειαζόμουν ακόμα άλλες βιβλιοθήκες για αποτελεσματική στατιστική εργασία στην Python. Το Pandas είναι μια βιβλιοθήκη για εργασία με δεδομένα σε μορφή πίνακα, ταξινομημένα σε "πλαίσια δεδομένων". Αυτά τα πλαίσια είναι παρόμοια με τον τρόπο που ταξινομούνται τα δεδομένα σε υπολογιστικά φύλλα και σχεσιακές βάσεις δεδομένων, και το Pandas μπορεί να εισαγάγει αυτά τα δεδομένα από δημοφιλή προγράμματα υπολογιστικών φύλλων όπως το Excel.

Μπορείτε να εμφανίσετε και να συνοψίσετε δεδομένα από Pandas, ακόμη και να δημιουργήσετε διασταυρούμενους πίνακες ή συγκεντρωτικούς πίνακες για κατηγορικά δεδομένα. Αυτό είναι χρήσιμο για την εκτέλεση ορισμένων στατιστικών δοκιμών, όπως το χ2. Είναι εύκολο να προσθέσετε και να διαγράψετε στήλες, καθώς και να αναδιαμορφώσετε πίνακες, όπως απαιτείται.

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

Στατιστικά Μοντέλα και Penguin: Παλινδρόμηση

statsmodels-tips-regression Κατασκευή μιας υπολογιστικής μηχανής με υποστήριξη Wolfram Mathematica χρησιμοποιώντας Python

Κατά τη διάρκεια του εργαστηρίου φυσικής, διεξάγαμε ένα πείραμα. Δεν θυμάμαι ακριβώς τι κάναμε. Νομίζω ότι μετρούσαμε τον χρόνο που χρειαζόταν ένα αντικείμενο για να πέσει από ύψος χρησιμοποιώντας ένα χρονόμετρο. Θυμάμαι ότι μας έδειξαν στη συνέχεια πώς να εισάγουμε τα δεδομένα σε ένα υπολογιστικό φύλλο και να δημιουργήσουμε μια παλινδρόμηση. Αυτό με εντυπωσίασε. Μια γραμμική εξίσωση που δημιουργήθηκε από τα δεδομένα! Αυτή ήταν η εισαγωγή μου στη γραμμική παλινδρόμηση.

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

Η διεπαφή του Pingouin είναι πολύ πιο απλή, αλλά ίσως πιο περιορισμένη. Είναι ιδανική για την εξερεύνηση δεδομένων χωρίς να ανησυχείτε για πράγματα όπως οι συντελεστές συσχέτισης ή η δυσκολία λήψης αποτελεσμάτων που παρέχονται από τα statsmodels. Αν και αυτές οι πληροφορίες είναι προσβάσιμες σε θαλάσσιο πτηνό του βορράΩστόσο, η παρουσίασή του είναι πολύ πιο απλή από τα στατιστικά μοντέλα. Τα αποτελέσματα οργανώνονται σε ένα πλαίσιο δεδομένων pandas παρόμοιο με τους πίνακες που βλέπετε σε πολλά άρθρα περιοδικών κοινωνικών επιστημών.

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

Matplotlib και Seaborn: Οπτικοποίηση

tips_vs_bill_regression Κατασκευή μιας Υπολογιστικής Μηχανής με την υποστήριξη του Wolfram Mathematica χρησιμοποιώντας Python

Ένα άλλο βασικό χαρακτηριστικό που ήθελα να αναδημιουργήσω από την παλιά μου αριθμομηχανή με γραφήματα ήταν οι ισχυρές απεικονίσεις. Ευτυχώς, οι σύγχρονες οθόνες είναι πιο αποτελεσματικές από τις παλαιότερες οθόνες LCD στις αριθμομηχανές, κάτι που είναι ένα μεγάλο πλεονέκτημα. Το πρόσεξα xkcd Επίσης, παρά το κόστος της (πιθανώς χάρη στην TI και τα benchmarks), έχω διαπιστώσει ότι η Python είναι μια πολύ ικανή εναλλακτική λύση σε μια αριθμομηχανή γραφημάτων.

Για στατιστικές απεικονίσεις σε Python, Θαλασσοπόρος Τα καλύτερα που έχω βρει μέχρι στιγμής. Τα ιστογράμματα συχνότητας, τα διαγράμματα διασποράς και τα διαγράμματα παλινδρόμησης είναι μια απόλαυση να τα βλέπεις.

Χρησιμοποιώντας το προεπιλεγμένο θέμα, ο γραφικός ανταγωνιστής του Seaborn ggplot2, διάσημος στοτακτοποιημένος«Κοινότητα R, δυναμικά.»

Οι στατιστικές απεικονίσεις αντικειμένων δεν είναι μόνο για διακόσμηση. Είναι απαραίτητες για την κατανόηση των δεδομένων. Ένα ιστόγραμμα σας δείχνει πώς κατανέμονται τα δεδομένα. Μπορείτε να διαπιστώσετε με μια ματιά εάν η κατανομή είναι ασύμμετρη πριν εκτελέσετε οποιεσδήποτε τυπικές δοκιμές.

matplotlib Μια άλλη δημοφιλής βιβλιοθήκη οπτικοποίησης, το Seaborn, είναι ένα front-end για το Matplotlib. Η αλλαγή του χαρακτηριστικού Seaborn αλλάζει επίσης την εμφάνιση των τυπικών γραφημάτων Matplotlib. Το Matplotlib μπορεί να χρησιμοποιηθεί τόσο για απλά γραφήματα γραμμών όσο και για σύνθετες οπτικοποιήσεις.

Μπορείτε να χρησιμοποιήσετε το Matplotlib για να επεξεργαστείτε γραφήματα Seaborn. Ίσως θελήσετε να αλλάξετε τις ετικέτες για να αφαιρέσετε την υπογράμμιση, εάν θέλετε να δημιουργήσετε ένα γράφημα για να το εμφανίσετε σε άλλους. Μπορείτε να το κάνετε αυτό για μια παρουσίαση ή ένα άρθρο.

Όπως και με τα στατιστικά μοντέλα, το Matplotlib απαιτεί εκμάθηση. Υπάρχουν δύο κύριες διεπαφές: η μέθοδος χαμηλού επιπέδου "άξονα" και η υψηλού επιπέδου αντικειμενοστρεφής διεπαφή. Η τελευταία είναι παρόμοια με το πώς Χρήση της αριθμομηχανής γραφημάτων για γρήγορα γραφήματαΤα επίσημα έγγραφα ενθαρρύνουν τη χρήση της μεθόδου των αξόνων.

Μπορώ επίσης να χρησιμοποιήσω το SymPy ως αριθμομηχανή γραφημάτων για να αναπαραστήσω συναρτήσεις. Αυτό έχει το πλεονέκτημα ότι δεν χρειάζεται να δημιουργήσω πίνακες NumPy. Μπορώ απλώς να γράψω μια εξίσωση στην οικεία μορφή y = mx + b και στη συνέχεια να δημιουργήσω το γράφημα. Μπορώ απλώς να το αντιμετωπίσω ως εξίσωση.

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

Εν ολίγοις, συνδυάζοντας τη δύναμη της Python με βιβλιοθήκες συμβολικών υπολογιστών, μπορείτε να δημιουργήσετε μια υπολογιστική μηχανή που αντικατοπτρίζει πολλές από τις δυνατότητες του Wolfram Mathematica—με πλήρη δυνατότητα προσαρμογής και ελέγχου. Φυσικά, θα υπάρξουν προκλήσεις όπως η διαχείριση απόδοσης, η διαχείριση μνήμης και η διασφάλιση ενός κατάλληλου περιβάλλοντος χρήστη, αλλά ξεκινώντας με προσεκτικά βήματα, το έργο μπορεί να επεκταθεί. Αν ξεκινήσετε σήμερα, ξεκινήστε με μια απλή ενότητα (όπως παραγοντοποίηση εξισώσεων ή γραφική παράσταση) και στη συνέχεια προσθέστε σταδιακά στοιχεία. Υπάρχουν ακόμα ευκαιρίες για βελτίωση της διεπαφής, ενσωμάτωση τεχνητής νοημοσύνης ή ανάπτυξη της υπηρεσίας στον ιστό—επομένως παραμένει ανοιχτή σε κλιμάκωση και καινοτομία.

Κουμπί μετάβασης στην κορυφή