[Python] Kurvenanpassung mit Polypolyse

Wenn Sie die Probendaten mit Polypoly kurvenanpassen möchten, können Sie dies einfach mit polyfit of numpy tun. Die Kurve wird durch das folgende Polynom dargestellt. polyfit berechnet $ a_n $ in der folgenden Formel.

y = \sum^{N}_{n=0} a_n x^n

Die von polyfit zurückgegebenen Werte werden in absteigender Reihenfolge aufgelistet. Die Formel lautet wie folgt.

y = \sum^N_{n=0} a_n x^{N-n}

Wenn Sie ein Diagramm einer Kurve mit dem von polyfit erhaltenen Koeffizienten zeichnen möchten, bereiten Sie den Wert von x in numpy.linspace usw. vor und übergeben Sie den Koeffizienten und x an numpy.polyval, um y zu berechnen.

Die folgende Abbildung zeigt das Ergebnis der Kurvenanpassung mit Probendaten und linearer Gleichung. Der Koeffizient kann einfach durch Einstellen von numpy.polyfit (x, y, 1) erhalten werden. x und y sind Daten und 1 ist Ordnung. download.png

w = np.polyfit(x,y,1)
xs = np.linspace(np.min(x),np.max(x),100)
ys = np.polyval(w,xs)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y,label='input')
ax.plot(xs, ys, 'r-', lw=2, label='polyfit')
ax.set_title('polyfit w = [%.2f, %.2f]' % (w[0],w[1]))
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend(loc='best',frameon=False)
ax.grid(True)

Beispieldaten wurden wie folgt erstellt.

def getData1(numPoints, w,b, nstdev, xmin=0.0, xmax=1.0 ):
    x = scipy.stats.uniform.rvs(loc=xmin, scale=xmax-xmin,size=numPoints)
    n = scipy.stats.norm.rvs(size=numPoints, scale=nstdev)

    y = w * x + b + n
    return x, y

x, y = getData1(100, 1.5, 10, 10, xmin=0, xmax=100)

Ergebnis der Kurvenanpassung mit einem kubischen Polypoly download.png

w = np.polyfit(x,y,3)

xs = np.linspace(np.min(x),np.max(x),100)
ys = np.polyval(w,xs)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y,label='input')
ax.plot(xs, ys, 'r-', lw=2, label='polyfit')
ax.set_title('polyfit w = [%.2f, %.2f, %.2f, %.2f]' % (w[0],w[1],w[2],w[3]))
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend(loc='best',frameon=False)
ax.grid(True)

Beispieldaten wurden wie folgt erstellt.

def getData2(numPoints, Amp,  freq, phase, nstdev, xmin=0.0, xmax=np.pi*2.0 ):
    x = scipy.stats.uniform.rvs(loc=xmin, scale=xmax-xmin,size=numPoints)
    n = scipy.stats.norm.rvs(size=numPoints, scale=nstdev)

    y = Amp*np.sin(freq * x + phase) + n
    return x, y

x, y = getData2(100, 10, 1.0, 0.0, 5, xmin=0, xmax=np.pi*2.0)

Referenz-URL https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyval.html#numpy.polyval

Recommended Posts

[Python] Kurvenanpassung mit Polypolyse
Implementiert in Python PRML Kapitel 1 Polygonkurvenanpassung
Zeichnen Sie mit Python Turtle eine Koch-Kurve
PRML-Diagrammzeichnung Abbildung 1.4 Polygonkurvenanpassung
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
PRML Kapitel 1 Bayesian Curve Fitting Python-Implementierung
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Modellbefestigung mit lmfit
Primzahlbeurteilung mit Python
Führen Sie Blender mit Python aus
Löse Mathe mit Python
Python ab Windows 7