Passen Sie eine Step-Funktion in Python an
Schrittfunktionen sind Methoden mit Graphen, die wie eine Reihe von Schritten aussehen. Sie bestehen aus einer Reihe von horizontalen Liniensegmenten mit Intervallen dazwischen und können auch als Treppenfunktionen bezeichnet werden.
In jedem gegebenen Intervall haben Stufenfunktionen einen konstanten Wert und erzeugen eine horizontale Linie im Diagramm. Die Intervalle machen die Sprünge zwischen jedem Liniensegment.
Schrittfunktionen sind hilfreich beim Erstellen diskreter Plots und werden häufig beim vektorisierten Plotten in Python verwendet. Sie können in Python mit numpy
implementiert werden.
Eine einfache Demonstration von Schrittfunktionen finden Sie in diesem Artikel.
Passen Sie eine Step-Funktion in Python an
Für dieses Beispiel wird die Python-Version 3.10.6 verwendet. Außerdem müssen wir die erforderlichen Bibliotheken installieren, was in unserem Fall numpy ist.
Numpy kann durch Ausführen des folgenden Befehls installiert werden.
pip install numpy
Jetzt brauchen wir scipy
, um die Daten zu optimieren und an die Graphen anzupassen. Es kann mit dem folgenden Befehl installiert werden.
pip install scipy
Wir werden für dieses Beispiel eine einfache Schrittfunktion unter Verwendung eines Datensatzes generieren. Importieren Sie zunächst numpy
und scipy
mit den folgenden Anweisungen in die Umgebung:
import numpy as np
import scipy
Wir werden für dieses Beispiel die numpy-Methode linspace
verwenden, um einen kleinen Datensatz zu generieren. Das folgende Code-Snippet kann dieses Dataset generieren:
x = np.linspace(0, 10, 101)
Wir müssen eine heaviside
-Funktion generieren, um die Treppendarstellung zu präsentieren. Je nach Anforderung des Anwendungsfalls kann es entweder mit numpy oder einer benutzerdefinierten Methode generiert werden.
Um die Funktion zu erstellen, verwenden wir für dieses Beispiel die numpy-Methode heaviside
.
y = np.heaviside((x - 5), 0.0)
Diese Methode generiert den heaviside
-Wert gemäss folgendem Diagramm.
0 if x1 < 0
heaviside(x1, x2) = x2 if x1 == 0
1 if x1 > 0
Wir werden curve_fit
aus der scipy-Bibliothek verwenden, um die args
mit optimalen Datenpunkten zu generieren.
curve_fit(sigmoid, x, y)
Nachdem wir den Ablauf geklärt und verstanden haben, sieht das endgültige Skript in etwa so aus:
import numpy as np
from scipy.special import expit
from scipy.optimize import curve_fit
x = np.linspace(0, 10, 101)
y = np.heaviside((x - 5), 0.0)
def sigmoid(x, x0, b):
return expit((x - x0) * b)
args, cov = curve_fit(sigmoid, x, y)
print(args)
Wir können die Ergebnisse dieses Plottens mit matplotlib
überwachen. Das Hinzufügen des Plot-Snippets und des endgültigen Codes sieht wie folgt aus.
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import expit
from scipy.optimize import curve_fit
x = np.linspace(0, 10, 101)
y = np.heaviside((x - 5), 0.0)
def sigmoid(x, x0, b):
return expit((x - x0) * b)
args, cov = curve_fit(sigmoid, x, y)
plt.scatter(x, y)
plt.plot(x, sigmoid(x, *args))
plt.show()
print(args)
Ausgang:
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn