Experimentelle Datenanpassung (Python) wird hinzugefügt ...

Überblick

Hier wollen wir die Parameter bestimmen, indem wir die experimentellen Daten aus dem Zustand anpassen, der in der txt- oder dat-Datei erhalten wurde. Um die Funktion unabhängig davon zu verwenden, ob sie linear oder nicht linear ist, verwenden wir ein Modul namens kurven_fit, das Teil des Moduls scipy.optimize ist, das im Python scipy-Paket enthalten ist.

Funktionsanpassung erster Ordnung

Laden Sie zunächst das gewünschte Modul.

#Erforderlich für die Montage
from scipy.optimize import curve_fit
import numpy as np
#Zur Veranschaulichung erforderlich
import matplotlib.pyplot as plt

Versuchen Sie, die folgenden Daten anzupassen.

x = np.asarray([1,2,4,6,7])
y = np.asarray([1,3,3,5,4])
plt.scatter(x, y, c='k')
plt.show()

fit1.png Definieren Sie die zu montierende Funktionsform und führen Sie die Anpassung tatsächlich durch.

#Definieren Sie den Funktionsausdruck, den Sie anpassen möchten. Hier ist eine lineare Funktion.
def linear_fit(x, a, b):
    return a*x + b
#Montage durchführen.
#prameter_initial = np.array([1,2])← Stellen Sie hier den Anfangswert ein, überspringen Sie ihn hier.
popt, pcov = curve_fit( linear_fit, x, y)#, p0= prameter_initial)

Bisher wurde eine Anpassung durchgeführt, und die Ergebnisse der Parameter a und b werden im ersten Rückgabewert popt gespeichert. Dieses Mal sind die beiden Parameter der Steigung a und des Abschnitts b der linearen Funktion in popt enthalten als [a, b] = [popt [0], popt [1]]. Überprüfen Sie den Wert.

print (popt[0],popt[1])

Vielleicht finden Sie a = 0,4999 ..., b = 1,2000 ... Plot überlagert, um zu sehen, ob dieser Wert gültig ist. Es sieht nicht gut aus.

c=popt[0]
d=popt[1]
f = c*x + d #f = linear_fit(x,popt[0],popt[1])Oder f= linear_fit(x,*popt)Aber ok.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()

fit2.png

Anpassung der quadratischen Funktion

Laden Sie ebenfalls das gewünschte Modul.

#Erforderlich für die Montage
from scipy.optimize import curve_fit
import numpy as np
#Zur Veranschaulichung erforderlich
import matplotlib.pyplot as plt

Versuchen Sie, die folgenden Daten anzupassen.

x = np.asarray([1,2,2.5,4,5,6,7,8,9,10])
y = np.asarray([10,8,5,2,1,1.2,2.5,5,7,10])
plt.scatter(x, y, c='k')
plt.show()

fit3.png Definieren Sie die zu montierende Funktionsform und führen Sie die Anpassung tatsächlich durch.

#Definieren Sie den Funktionsausdruck, den Sie anpassen möchten. Hier ist eine quadratische Funktion.
def two_fit(x,a,b):
    return  a*(x-b)**2

#Montage durchführen. Der Anfangswert wird ebenfalls eingestellt.
prameter_initial = np.array([1,5])
popt, pcov = curve_fit(two_fit, x, y, p0= prameter_initial)

Bisher wurde eine Anpassung durchgeführt, und die Ergebnisse der Parameter a und b werden im ersten Rückgabewert popt gespeichert. Dieses Mal sind die beiden Parameter der Steigung a und des Abschnitts b der linearen Funktion in popt enthalten als [a, b] = [popt [0], popt [1]]. Überprüfen Sie den Wert.

print (popt[0],popt[1])

Vielleicht finden Sie a = 0.5404046977156955, b = 5.48472528172034. Plot überlagert, um zu sehen, ob dieser Wert gültig ist. Obwohl in der linearen Funktion nicht erläutert, gibt es derzeit zwei Methoden zum Zeichnen. Versuchen Sie zunächst die gleiche Methode wie für die lineare Funktion.

c=popt[0]
d=popt[1]
f = c*(x-d)**2 #f = two_fit(x,popt[0],popt[1])#Sie können so schreiben, f= two_fit(x,*popt)Aber ok.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()

fit4.png Ich wusste nicht, wann es eine lineare Funktion war, aber Sie können sehen, dass es ruckelt. Wenn es viele Daten gibt, stört mich das nicht, aber ich mag das Aussehen nicht, deshalb schreibe ich es als zweite Methode reibungslos.

#Angeben des Zeichenbereichs
# x1 = np.arange(x-Achse Minimum,Maximalwert auf der x-Achse,Eingekerbt)
x1 = np.arange(1, 10, 0.000001)
c=popt[0]
d=popt[1]
f = c*(x1-d)**2
plt.scatter(x, y, c='k')
plt.plot(x1, f, c='r')
plt.show()

fit5.png Es fühlt sich schön und glatt an. Erstellen Sie x1 als Zeichenbereich und verfeinern Sie die Schritte. Nachdem wir die grundlegende Anpassungs- und Zeichenmethode kennen, werden wir endlich die experimentellen Daten der txt-Datei und der dat-Datei lesen und die Anpassung durchführen.

Anpassung von experimentellen Daten

Lesen Sie abschließend die Daten aus der txt-Datei und der dat-Datei, führen Sie die Anpassung durch und bestimmen Sie die Parameter. Ich werde den ganzen Code ganz am Ende setzen.

Recommended Posts

Experimentelle Datenanpassung (Python) wird hinzugefügt ...
Datenanalyse Python
[Python] Daten lesen
Datenanalyse mit Python 2
Python-Datenvisualisierungsbibliotheken
Datenanalyse Übersicht Python
Datenbereinigung mit Python
Den Inhalt der Daten in Python nicht kennen
Python-Datenanalysevorlage
[Python-Tutorial] Datenstruktur
[Python] Numpy Daten sortieren
Datenanalyse mit Python
Grammatikfunktionen aus Python3.6 hinzugefügt
Experiment zur Optimierung der Tensorflow-Daten
Zeigen Sie UTM-30LX-Daten in Python an
Data Science Cheet Sheet (Python)
[Python] Hinweise zur Datenanalyse
Meine Python-Datenanalyseumgebung
Python-Anwendung: Datenvisualisierung # 2: matplotlib
Lernnotizen zur Python-Datenanalyse
Python-Datentyp-Zusammenfassungsnotiz
[Python] Kurvenanpassung mit Polypolyse
[Python] Zeichnen Sie Zeitreihendaten
Python für die Datenanalyse Kapitel 2
Konvertierung von Bilddatentypen [Python]
Datenanalyse mit Python-Pandas
Python> Tupel> Daten, Adresse = s.recvfrom (10000)
Python für die Datenanalyse Kapitel 3
Lesen von JSON-Daten mit Python