Die SciPy-Bibliothek ist eine der zentralen Erweiterungen für Python im wissenschaftlichen Rechnen.
Während NumPy (Numerical Python) vor allem für effiziente Arrays und grundlegende numerische Operationen zuständig ist, baut SciPy darauf auf und erweitert es um eine Vielzahl von Funktionen für Statistik, lineare Algebra, Optimierung und Signalverarbeitung.
Man kann sich SciPy also als „Werkzeugkasten“ vorstellen, der viele Spezialfunktionen bündelt, die man als Data Scientist immer wieder braucht.
Was ist SciPy?
- Bibliothek: Eine Sammlung von Modulen (Themenpaketen), die bestimmte Aufgabenbereiche abdecken.
- Aufbau: SciPy importiert intern NumPy und erweitert es um weitere Funktionalitäten.
- Einsatz in Data Science:
- Hypothesentests und Statistik
- Optimierungsprobleme (z. B. Minimierung von Kostenfunktionen)
- Signal- und Bildverarbeitung
- Sparse-Matrizen (für sehr große, dünn besetzte Matrizen)
Installation und Import
In den meisten Python-Umgebungen (z. B. Anaconda) ist SciPy bereits enthalten. Falls nicht, kann man es einfach nachinstallieren:
pip install scipyImportiert wird SciPy meistens so:
import numpy as np
from scipy import stats, optimize, sparse
stats: Statistikfunktionenoptimize: Optimierungsverfahrensparse: Funktionen für dünn besetzte Matrizen
Wichtige Module in SciPy
1. Statistik (scipy.stats)
Dieses Modul bietet eine große Sammlung an Wahrscheinlichkeitsverteilungen sowie Statistiken und Hypothesentests.
Beispiel: Berechnung von Mittelwert, Varianz und einem t-Test:
from scipy import stats
import numpy as np
# Zufallsdaten simulieren
data1 = np.random.normal(loc=5, scale=2, size=100) # Mittelwert 5, Std-Abweichung 2
data2 = np.random.normal(loc=5.5, scale=2, size=100)
# Statistische Kennzahlen
print("Mittelwert:", np.mean(data1))
print("Varianz:", np.var(data1))
# Hypothesentest (t-Test)
t_stat, p_val = stats.ttest_ind(data1, data2)
print("t-Statistik:", t_stat, "p-Wert:", p_val)
Begriffe erklärt:
- Standardabweichung (std): Maß für die Streuung der Werte um den Mittelwert.
- t-Test: Statistischer Test, der prüft, ob zwei Mittelwerte signifikant verschieden sind.
- p-Wert: Wahrscheinlichkeit, dass der beobachtete Unterschied zufällig entstanden ist.
2. Optimierung (scipy.optimize)
Viele Data-Science-Methoden basieren auf der Optimierung von Funktionen – z. B. das Minimieren einer Fehlerfunktion.
Beispiel: Minimum einer quadratischen Funktion finden
from scipy import optimize
# Funktion: f(x) = x^2 + 3x + 2
def f(x):
return x**2 + 3*x + 2
# Minimum suchen
result = optimize.minimize(f, x0=0) # Startwert x0=0
print("Minimum bei:", result.x)
Begriffe erklärt:
- Optimierung: Verfahren zur Suche von Minimal- oder Maximalwerten.
- Startwert (x0): Anfangspunkt für das Suchverfahren – wichtig, da manche Methoden in lokalen Minima steckenbleiben können.
3. Sparse Matrizen (scipy.sparse)
In vielen Anwendungsfällen (z. B. Textanalyse mit „Bag of Words“) entstehen riesige Matrizen, die größtenteils aus Nullen bestehen.
Solche Matrizen bezeichnet man als dünn besetzt (sparse). Sie effizient zu speichern und zu verarbeiten, ist entscheidend für die Performance.
Beispiel:
from scipy import sparse
import numpy as np
# Normale Matrix
dense_matrix = np.array([
[0, 0, 3],
[4, 0, 0],
[0, 0, 0]
])
# Sparse-Darstellung
sparse_matrix = sparse.csr_matrix(dense_matrix)
print(sparse_matrix)
Ausgabe:
(0, 2) 3
(1, 0) 4
Das bedeutet: Nur die nicht-null Werte werden mit ihren Koordinaten gespeichert.
4. Weitere nützliche Module
scipy.linalg: Erweiterte Funktionen für lineare Algebra (z. B. Eigenwerte, Matrixzerlegungen).scipy.signal: Signalverarbeitung (Filter, Fouriertransformation).scipy.integrate: Numerische Integration und Differenzialgleichungen.
Zusammenfassung
- SciPy ist eine zentrale Bibliothek für wissenschaftliches Rechnen in Python.
- Sie baut auf NumPy auf und bietet spezialisierte Funktionen für Statistik, Optimierung, Sparse-Matrizen und vieles mehr.
- Für Data Scientists ist besonders
scipy.stats(Statistik) undscipy.optimize(Optimierung) relevant. - Praxis-Tipp: Starte mit NumPy, nutze SciPy gezielt für Spezialfälle.