numpy
Einfache lineare Regression
Suche…
Einführung
Anpassen einer Linie (oder einer anderen Funktion) an eine Gruppe von Datenpunkten.
Verwenden von np.polyfit
Wir erstellen ein Dataset, das dann mit einer geraden Linie $ f (x) = mx + c $ zusammenpasst.
npoints = 20
slope = 2
offset = 3
x = np.arange(npoints)
y = slope * x + offset + np.random.normal(size=npoints)
p = np.polyfit(x,y,1) # Last argument is degree of polynomial
Um zu sehen, was wir getan haben:
import matplotlib.pyplot as plt
f = np.poly1d(p) # So we can call f(x)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y, 'bo', label="Data")
plt.plot(x,f(x), 'b-',label="Polyfit")
plt.show()
Hinweis: Dieses Beispiel folgt der numpy-Dokumentation unter https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html ziemlich genau.
Np.linalg.lstsq verwenden
Wir verwenden den gleichen Datensatz wie bei polyfit:
npoints = 20
slope = 2
offset = 3
x = np.arange(npoints)
y = slope * x + offset + np.random.normal(size=npoints)
Nun versuchen wir eine Lösung zu finden, indem wir das System der linearen Gleichungen A b = c minimieren, indem wir | cA b | ** 2 minimieren
import matplotlib.pyplot as plt # So we can plot the resulting fit
A = np.vstack([x,np.ones(npoints)]).T
m, c = np.linalg.lstsq(A, y)[0] # Don't care about residuals right now
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y, 'bo', label="Data")
plt.plot(x, m*x+c, 'r--',label="Least Squares")
plt.show()
Hinweis: Dieses Beispiel folgt der numpy-Dokumentation unter https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html sehr genau.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow