Maschinelles Lernen - Polynomiale Regression
- Vorherige Seite Lineare Regression
- Nächste Seite Mehrfachregression
Polynomial Regression (Polynomregression)
Wenn Ihre Datenpunkte offensichtlich nicht für lineare Regression geeignet sind (durch die Datenpunkte verlaufende Linie), könnte Polynomial Regression die ideale Wahl sein.
Wie die lineare Regression verwendet auch die Polynomregression die Beziehung zwischen den Variablen x und y, um die beste Methode zur Zeichnung der Datenpunkte zu finden.

Arbeitsweise
Python hat einige Methoden, um die Beziehung zwischen Datenpunkten zu finden und die Polynomregressionslinie zu zeichnen. Wir werden Ihnen zeigen, wie Sie diese Methoden verwenden können,而不是 durch mathematische Formeln.
Im folgenden Beispiel haben wir 18 Fahrzeuge registriert, die eine bestimmte Mautstelle passiert haben.
Wir haben die Geschwindigkeit und die Zeit des Durchgangs (Stunde) der Fahrzeuge aufgezeichnet.
Die x-Achse stellt die Stunden am Tag dar, die y-Achse die Geschwindigkeit:
Beispiel
Zuerst zeichnen Sie das Streudiagramm:
import matplotlib.pyplot as plt x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] plt.scatter(x, y) plt.show()
Ergebnis:

Beispiel
Importieren numpy
und matplotlib
und zeichnen Sie dann die Polynomregressionslinie:
import numpy import matplotlib.pyplot as plt x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) myline = numpy.linspace(1, 22, 100) plt.scatter(x, y) plt.plot(myline, mymodel(myline)) plt.show()
Ergebnis:

Beispielexplanation
Importieren Sie die erforderlichen Module:
import numpy import matplotlib.pyplot as plt
Erstellen Sie ein Array, das die Werte auf der x- und y-Achse darstellt:
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
NumPy hat eine Methode, um uns zu ermöglichen, Polynommodelle zu erstellen:
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
Dann geben Sie die Anzeige der Zeilen an, wir beginnen bei Position 1 und enden bei Position 22:
myline = numpy.linspace(1, 22, 100)
Zeichnen Sie das ursprüngliche Streudiagramm:
plt.scatter(x, y)
Zeichnen Sie die Polynomregressionslinie:
plt.plot(myline, mymodel(myline))
Zeigen Sie das Diagramm an:
plt.show()
Quadratischer Faktor
Es ist wichtig zu wissen, wie gut die Beziehung zwischen den Werten auf der x- und y-Achse ist, da Polynomregression ohne Beziehung nichts vorhersagen kann.
Diese Beziehung wird durch einen Wert namens Quadratischer Faktor (r-squared) gemessen.
Der Wertebereich des Quadratischen Faktors (r-squared) liegt zwischen 0 und 1, wobei 0 für nicht verwandt und 1 für 100% verwandt steht.
Python und das Sklearn-Modul berechnen diesen Wert für Sie, alles, was Sie tun müssen, ist, die x- und y-Arraye einzugeben:
Beispiel
Wie gut passt meine Daten in der Polynomregression?
import numpy from sklearn.metrics import r2_score x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) print(r2_score(y, mymodel(x)))
Anmerkung:Das Ergebnis 0,94 zeigt, dass eine gute Beziehung besteht, und wir können Polynomregression in zukünftigen Vorhersagen verwenden.
Zukunftswerte vorhersagen
Jetzt können wir die gesammelten Informationen verwenden, um zukünftige Werte vorherzusagen.
Beispiel: Lassen Sie uns versuchen, die Geschwindigkeit der Fahrzeuge um 17:00 Uhr in der Nacht über die Mautstelle vorherzusagen:
Dafür benötigen wir dasselbe wie im obigen Beispiel: mymodel Array:
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
Beispiel
Die Geschwindigkeit des Fahrzeugs um 17:00 Uhr vorherzusagen:
import numpy from sklearn.metrics import r2_score x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) speed = mymodel(17) print(speed)
Die Vorhersagegeschwindigkeit beträgt 88,87, und wir können es auch im Diagramm sehen:

Schlechte Anpassung?
Lassen Sie uns einen Beispielfall erstellen, bei dem Polynomregression nicht die beste Methode zur Vorhersage zukünftiger Werte ist.
Beispiel
Diese Werte für die x- und y-Achsen führen zu einer sehr schlechten Anpassung der polynomialen Regression:}
import numpy import matplotlib.pyplot as plt x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40] y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) myline = numpy.linspace(2, 95, 100) plt.scatter(x, y) plt.plot(myline, mymodel(myline)) plt.show()
Ergebnis:

Was ist der r-squared-Wert?
Beispiel
Sie sollten einen sehr niedrigen r-squared-Wert erhalten.
import numpy from sklearn.metrics import r2_score x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40] y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) print(r2_score(y, mymodel(x)))
Ergebnis: 0,00995 zeigt eine sehr schlechte Beziehung und sagt uns, dass der Datensatz nicht für die polynomiale Regression geeignet ist.
- Vorherige Seite Lineare Regression
- Nächste Seite Mehrfachregression