Python für Mathe

  • Tutorial

BildDas Ökosystem der Python-Sprache wächst rasant. Es ist nicht mehr nur eine Allzwecksprache. Mit ihm können Sie erfolgreich Webanwendungen, Systemdienstprogramme und vieles mehr entwickeln. In diesem Hinweis konzentrieren wir uns noch auf eine andere Anwendung, nämlich wissenschaftliche Berechnungen.


Wir werden versuchen, in der Sprache Funktionen zu finden, die normalerweise von mathematischen Paketen benötigt werden. Berücksichtigen Sie die Stärken und Schwächen der Idee, Python anstelle von MATLAB, Maple, Mathcad und Mathematica zu verwenden.


Entwicklungsumgebung


Der Python-Code kann in eine Datei mit der Erweiterung .py eingefügt und zur Ausführung an den Interpreter gesendet werden. Dies ist ein klassischer Ansatz, der normalerweise mit einer Entwicklungsumgebung wie pyCharm verwässert wird. Für Python ( und nicht nur ) gibt es jedoch eine andere Möglichkeit, mit dem Interpreter zu interagieren - interaktive Jupyter- Notizblöcke , die den Zwischenzustand des Programms zwischen der Ausführung verschiedener Codeblöcke beibehalten , die in zufälliger Reihenfolge ausgeführt werden können. Diese Interaktionsmethode wurde aus Mathematica-Notizbüchern entlehnt, später erschien ein Analogon in MATLAB (Live-Skript).



Somit wird die gesamte Arbeit mit Python-Code an den Browser übertragen. Das resultierende Notizbuch kann mit nbviewer.jupyter.org geöffnet werden . Github (und gist ) können den Inhalt solcher Dateien unabhängig voneinander anzeigen (konvertieren).


Die Nachteile ergeben sich aus der Browsernatur von jupyter: das Fehlen eines Debuggers und Probleme beim Drucken einer großen Menge von Informationen (Einfrieren des Browserfensters). Das letzte Problem wird durch die Erweiterung gelöst, die die maximale Anzahl von Zeichen begrenzt, die als Ergebnis der Ausführung einer einzelnen Zelle angezeigt werden können.


Datenvisualisierung


Für die Datenvisualisierung wird normalerweise die matplotlib- Bibliothek verwendet , deren Befehle MATLAB sehr ähnlich sind. In Stanford wurde eine Bibliothek entwickelt, die die Möglichkeiten von Matplotlib - Seaborn erweitert (ungewöhnliche Grafiken für Statistiken).



Betrachten Sie ein Beispiel für die Erstellung eines Histogramms für eine generierte Datenprobe.


import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
# example data
mu = 100  # mean of distribution
sigma = 15  # standard deviation of distribution
x = mu + sigma * np.random.randn(10000)
num_bins = 50
# the histogram of the data
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
# add a 'best fit' line
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
# Tweak spacing to prevent clipping of ylabel
plt.subplots_adjust(left=0.15)
plt.show()


Wir sehen, dass die Syntax von matplotlib der Syntax von MATLAB sehr ähnlich ist. Es ist auch erwähnenswert, dass Latex im Diagrammtitel verwendet wird.


Computational Math


Für die lineare Algebra in Python ist es im Gegensatz zur integrierten Listensprache üblich, numpy zu verwenden , dessen Vektoren und Matrizen typisiert sind. Für wissenschaftliche Berechnungen wird die Scipy- Bibliothek verwendet .


Speziell für MATLAB-Benutzer wurde ein Leitfaden zum Übergang von MATLAB zu Numpy geschrieben .


import scipy.integrate as integrate
import scipy.special as special
result = integrate.quad(lambda x: special.jv(2.5,x), 0, 4.5)

In diesem Beispiel wird der Wert eines bestimmten Integrals der Bessel-Funktion im Intervall [0,0.45] mithilfe der QUADPACK-Bibliothek (Fortran) numerisch berechnet.


Zeichenberechnung


Sie können die Sympy- Bibliothek verwenden, um Zeichenberechnungen zu verwenden . Mit Sympy geschriebener Code ist jedoch in seiner Schönheit dem in Mathematica, das sich auf symbolisches Rechnen spezialisiert hat, geschriebenen Code unterlegen.


# python
from sympy import Symbol, solve
x = Symbol("x")
solve(x**2 - 1)


In Bezug auf die Funktionalität ist Sympy Mathematica unterlegen. Abhängig von Ihren Anforderungen kann sich jedoch herausstellen, dass die Funktionen für Sie ungefähr gleich sind. Einen detaillierteren Vergleich finden Sie im Sympy Repository Wiki .


Beschleunigen Sie den Code


Um Ihren Code durch Konvertierung in C ++ zu beschleunigen, kann er mithilfe der theano- Bibliothek implementiert werden . Die Syntax ist der Preis, der für eine solche Beschleunigung zu zahlen ist. Jetzt müssen Sie die oo-orientierten Funktionen schreiben und die Typen aller Variablen angeben.


import theano
import theano.tensor as T
x = T.dmatrix('x')
s = 1 / (1 + T.exp(-x))
logistic = theano.function([x], s)
logistic([[0, 1], [-1, -2]])

Einige Faltungsbibliotheken für neuronale Netze wie Lasagne und Keras verwenden Theano für ihre Berechnungen. Es ist auch erwähnenswert, dass theano die Beschleunigung aufgrund von GPU-Computing unterstützt.


Maschinelles Lernen


Die beliebteste Bibliothek für maschinelles Lernen für Python ist Scikit-Learn , das alle grundlegenden Algorithmen für maschinelles Lernen sowie Qualitätsmetriken, Tools zur Validierung von Algorithmen und Tools zur Vorverarbeitung von Daten enthält.



from sklearn import svm
from sklearn import datasets
clf = svm.SVC()
iris = datasets.load_iris()
X, y = iris.data, iris.target
clf.fit(X, y)  
clf.predict(X)

Zum Laden von Daten aus tabellarischen Datenformaten (Excel, CSV) werden normalerweise Pandas verwendet . Die heruntergeladenen Daten werden im Speicher in Form von DataFrames dargestellt, auf die verschiedene Operationen angewendet werden können: sowohl Kleinbuchstaben (zeilenweise Verarbeitung) als auch Gruppen (Filter, Gruppierungen). Eine Übersicht über die Hauptfunktionen von Pandas finden Sie in der Präsentation " Pandas: Eine Übersicht über die Hauptfunktionen " (Gepostet von Alexander Dyakonov, Professor an der Moskauer Staatlichen Universität).


Nicht alles ist so glatt ...


Allerdings ist in Python nicht alles so glatt. Zum Beispiel verstehen sich jetzt zwei Versionen der Sprache 2. und 3. , beide entwickeln sich parallel, die Syntax der zweiten Version ist jedoch nicht vollständig mit der Syntax der dritten Version kompatibel.


Ein weiteres Problem, das Sie möglicherweise haben, wenn Sie nicht der Eigentümer von Linux sind. In diesem Fall haben Sie möglicherweise Schwierigkeiten, eine Reihe von Bibliotheken zu installieren. Einige Bibliotheken sind vollständig inkompatibel, z. B. Tensorflow .


Die fraglichen Bibliotheken

PS: Alle in diesem Artikel beschriebenen Python-Bibliotheken sind Open Source und werden kostenlos verteilt. Zum Herunterladen können Sie den Befehl pip verwenden oder einfach die Anaconda- Assembly herunterladen , die alle Hauptbibliotheken enthält.


Jetzt auch beliebt: