Python -Tutorial

Python-HOME Python-Einführung Python-Erste Schritte Python-Syntax Python-Kommentare Python-Variablen Python-Datentypen Python-Zahlen Python-Casting Python-Strings Python-Booleans Python-Operatoren Python-Listen Python-Tupel Python-Sets Python-Wörterbücher Python Wenn ... Sonst Python-While-Schleifen Python-For-Schleifen Python-Funktionen Python-Lambda Python-Arrays Python-Klassen/Objekte Python-Vererbung Python-Iteratoren Python-Bereich Python-Module Python-Daten Python-Mathematik Python-JSON Python-RegEx Python-PIP Python Versuchen ... Außer Python-Benutzereingabe Formatierung von Python-Strings

Umgang mit Dateien

Umgang mit Python-Dateien Python-Dateien lesen Python-Dateien schreiben/erstellen Python-Dateien löschen

Python-Module

NumPy-Tutorial Panda-Komplettlösung Scipy-Tutorial

Python-Matplotlib

Matplotlib-Einführung Matplotlib loslegen Matplotlib-Pyplot Matplotlib-Plotten Matplotlib-Marker Matplotlib-Linie Matplotlib-Labels Matplotlib-Raster Matplotlib-Subplots Matplotlib-Scatter Matplotlib-Bars Matplotlib-Histogramme Matplotlib-Kreisdiagramme

Maschinelles Lernen

Einstieg Mittlerer Medianmodus Standardabweichung Perzentil Datenverteilung Normale Datenverteilung Streudiagramm Lineare Regression Polynomiale Regression Mehrfache Regression Skala Trainieren/Testen Entscheidungsbaum

Python-MySQL

MySQL-erste Schritte MySQL-Datenbank erstellen MySQL-Tabelle erstellen MySQL-Einfügung MySQL-Auswahl MySQL-Wo MySQL-Reihenfolge nach MySQL löschen MySQL-Drop-Tabelle MySQL-Update MySQL-Limit MySQL-Beitritt

Python-MongoDB

Beginnen Sie mit MongoDB MongoDB Datenbank erstellen MongoDB-Create-Sammlung MongoDB-Einfügung MongoDB-Suche MongoDB-Abfrage MongoDB-Sortierung MongoDB löschen MongoDB-Drop-Sammlung MongoDB-Update MongoDB-Limit

Python-Referenz

Python-Übersicht Eingebaute Python-Funktionen Python-String-Methoden Python-Listenmethoden Methoden des Python-Wörterbuchs Python-Tupelmethoden Python-Set-Methoden Python-Dateimethoden Python-Schlüsselwörter Python-Ausnahmen Python-Glossar

Modulreferenz

Zufallsmodul Anforderungsmodul Statistikmodul Mathe-Modul cMath-Modul

Python-Anleitung

Listenduplikate entfernen Einen String umkehren Fügen Sie zwei Zahlen hinzu

Python-Beispiele

Python-Beispiele Python-Compiler Python-Übungen Python-Quiz Python-Zertifikat

Maschinelles Lernen – Polynomiale Regression


Polynomiale Regression

Wenn Ihre Datenpunkte eindeutig nicht in eine lineare Regression passen (eine gerade Linie durch alle Datenpunkte), ist dies möglicherweise ideal für die Polynomregression.

Die polynomische Regression verwendet wie die lineare Regression die Beziehung zwischen den Variablen x und y, um den besten Weg zu finden, eine Linie durch die Datenpunkte zu ziehen.


Wie funktioniert es?

Python verfügt über Methoden zum Finden einer Beziehung zwischen Datenpunkten und zum Zeichnen einer Polynomregressionslinie. Wir zeigen Ihnen, wie Sie diese Methoden verwenden, anstatt die mathematische Formel durchzugehen.

Im Beispiel unten haben wir 18 Autos registriert, als sie an einer bestimmten Mautstelle vorbeifuhren.

Wir haben die Geschwindigkeit des Autos und die Tageszeit (Stunde) registriert, zu der das Überholen stattfand.

Die x-Achse stellt die Stunden des Tages dar und die y-Achse stellt die Geschwindigkeit dar:

Beispiel

Beginnen Sie mit dem Zeichnen eines Streudiagramms:

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 numpyund matplotlibzeichnen Sie dann die Linie der polynomialen Regression:

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:

Beispiel erklärt

Importieren Sie die benötigten Module.

In unserem NumPy-Tutorial erfahren Sie mehr über das NumPy-Modul .

In unserem SciPy-Tutorial erfahren Sie mehr über das SciPy-Modul .

import numpy
import matplotlib.pyplot as plt

Erstellen Sie die Arrays, die die Werte der x- und y-Achse darstellen:

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, mit der wir ein Polynommodell erstellen können:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Geben Sie dann an, wie die Zeile angezeigt wird, 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 Linie der polynomialen Regression:

plt.plot(myline, mymodel(myline))

Zeigen Sie das Diagramm an:

plt.show()



R-Quadrat

Es ist wichtig zu wissen, wie gut die Beziehung zwischen den Werten der x- und y-Achse ist, wenn es keine Beziehung gibt, kann die Polynomregression nicht verwendet werden, um etwas vorherzusagen.

Die Beziehung wird mit einem Wert gemessen, der als r-Quadrat bezeichnet wird.

Der r-Quadrat-Wert reicht von 0 bis 1, wobei 0 keine Beziehung bedeutet und 1 100 % Beziehung bedeutet.

Python und das Sklearn-Modul berechnen diesen Wert für Sie, alles, was Sie tun müssen, ist, ihn mit den x- und y-Arrays zu füttern:

Beispiel

Wie gut passen meine Daten in eine 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)))

Hinweis: Das Ergebnis 0,94 zeigt, dass es eine sehr gute Beziehung gibt, und wir können die Polynomregression in zukünftigen Vorhersagen verwenden.


Vorhersage zukünftiger Werte

Jetzt können wir die gesammelten Informationen verwenden, um zukünftige Werte vorherzusagen.

Beispiel: Versuchen wir, die Geschwindigkeit eines Autos vorherzusagen, das gegen 17 Uhr an der Mautstelle vorbeifährt:

Dazu benötigen wir dasselbe mymodelArray aus dem obigen Beispiel:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Beispiel

Sagen Sie die Geschwindigkeit eines vorbeifahrenden Autos um 17 Uhr voraus:

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)

Das Beispiel sagte eine Geschwindigkeit von 88,87 voraus, was wir auch aus dem Diagramm ablesen konnten:


Schlechte Passform?

Lassen Sie uns ein Beispiel erstellen, bei dem die Polynomregression nicht die beste Methode wäre, um zukünftige Werte vorherzusagen.

Beispiel

Diese Werte für die x- und y-Achse sollten zu einer sehr schlechten Anpassung für die Polynomregression führen:

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:

Und der r-Quadrat-Wert?

Beispiel

Sie sollten einen sehr niedrigen r-Quadrat-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)))

Das Ergebnis: 0,00995 weist auf eine sehr schlechte Beziehung hin und sagt uns, dass dieser Datensatz nicht für die Polynomregression geeignet ist.