Implementieren Sie die polynomiale Regression in Python

Muhammad Husnain 15 Februar 2024
  1. Definition von Regression
  2. Arten der Regression
  3. Implementieren Sie die polynomiale Regression in Python
Implementieren Sie die polynomiale Regression in Python

Dieser Artikel beleuchtet die Polynomregression und wie wir sie mit Python auf reale Daten anwenden können.

Zuerst werden wir verstehen, was Regression ist und wie sie sich von der polynomialen Regression unterscheidet. Dann werden wir die Fälle sehen, in denen wir speziell eine Polynomregression benötigen.

Wir werden daneben mehrere Programmierbeispiele sehen, um das Konzept besser zu verstehen.

Definition von Regression

Regression ist eine statistische Methode zur Bestimmung der Beziehung zwischen unabhängigen Variablen oder Merkmalen und einer abhängigen Variablen oder einem Ergebnis. Beim maschinellen Lernen wird es als Methode zur Vorhersagemodellierung verwendet, bei der ein Algorithmus verwendet wird, um kontinuierliche Ergebnisse zu antizipieren.

Beim überwachten maschinellen Lernen ist die Lösung von Regressionsproblemen eine der häufigsten Anwendungen unter maschinellen Lernmodellen.

Wir trainieren die Algorithmen, um die Beziehung zwischen einer abhängigen Variablen und einer unabhängigen Variablen zu finden, um einige Ergebnisse basierend auf einigen unsichtbaren Eingabedatensätzen vorherzusagen.

Regressionsmodelle werden hauptsächlich in Vorhersageanalysemodellen verwendet, bei denen Anwendungen zukünftige Daten basierend auf einigen Eingabedaten oder historischen Daten vorhersagen müssen. Beispielsweise können Organisationen die Regressionsanalyse verwenden, um die Verkäufe des nächsten Monats basierend auf aktuellen Verkaufsdaten vorherzusagen.

Medizinunternehmen können Regressionsmodelle verwenden, um Gesundheitstrends in der Öffentlichkeit über einen bestimmten Zeitraum zu prognostizieren. Typische Anwendungen von Regressionstechniken sind:

  1. Prognostizieren kontinuierlicher Ergebnisse wie Immobilienwerte, Aktienkurse oder Verkäufe;
  2. Vorhersage der Leistung zukünftiger Verkaufs- oder Marketingaktivitäten im Einzelhandel, um die Ressourcennutzung zu maximieren;
  3. Vorhersage von Kunden- oder Benutzermustern, wie z. B. Streaming-Dienste oder Shopping-Websites;
  4. Analysieren von Datensätzen, um herauszufinden, wie Variablen und Ergebnisse zusammenhängen;
  5. Vorhersage von Zinssätzen und Aktienkursen auf der Grundlage verschiedener Faktoren;
  6. Erstellen von Visualisierungen von Zeitreihen.

Arten der Regression

Es gibt viele Regressionstechniken, aber hauptsächlich werden diese in drei Hauptkategorien eingeteilt:

  1. Einfache lineare Regression
  2. Logistische Regression
  3. Mehrfache lineare Regression

Einfache lineare Regression

Die einfache lineare Regression ist ein linearer Regressionsansatz, bei dem eine gerade Linie innerhalb von Datenpunkten gezeichnet wird, um den Fehler zwischen der Linie und den Datenpunkten zu minimieren. Es ist eine der grundlegendsten und unkompliziertesten Formen der maschinellen Lernregression.

In diesem Szenario wird davon ausgegangen, dass die unabhängigen und abhängigen Variablen eine lineare Beziehung haben.

Logistische Regression

Wenn die abhängige Variable nur zwei Werte haben kann, true oder false oder ja oder nein, wird die logistische Regression verwendet. Die Wahrscheinlichkeit, dass eine abhängige Variable auftritt, kann mithilfe logistischer Regressionsmodelle vorhergesagt werden.

Die Ausgabewerte müssen in den meisten Fällen binär sein. Die Beziehung zwischen den abhängigen und unabhängigen Variablen kann mithilfe einer Sigmoidkurve abgebildet werden.

Mehrfache lineare Regression

Die multiple lineare Regression wird verwendet, wenn mehr als eine unabhängige Variable verwendet wird. Techniken der multiplen linearen Regression umfassen die Polynomregression.

Wenn es viele unabhängige Variablen gibt, handelt es sich um eine multiple lineare Regression. Wenn zahlreiche unabhängige Variablen vorhanden sind, erzielt sie eine bessere Anpassung als die einfache lineare Regression.

Bei zweidimensionaler Darstellung ist das Ergebnis eine gekrümmte Linie, die zu den Datenpunkten passt.

Bei der einfachen Regression haben wir die folgende Formel verwendet, um den Wert einer abhängigen Variablen mithilfe eines unabhängigen Werts zu ermitteln:

$$
y = a+bx+c
$$

Wo:

  • y ist die abhängige Variable
  • a ist der y-Achsenabschnitt
  • b ist die Steigung
  • c ist die Fehlerquote

In vielen Fällen liefert die lineare Regression nicht das perfekte Ergebnis, wenn mehr als eine unabhängige Variable vorhanden ist, da eine polynomiale Regression mit der folgenden Formel erforderlich ist:

$$
y = a_0 + a_1x_1 + a_2x_2^2 + …..+ a_nx_n^n
$$

Wie wir sehen können, ist y die abhängige Variable von x.

Der Grad dieses Polynoms sollte den optimalen Wert haben, da ein höherer Grad die Daten überpasst. Bei einem niedrigeren Gradwert passt das Modell die Ergebnisse nicht an.

Implementieren Sie die polynomiale Regression in Python

Python enthält Funktionen zum Bestimmen einer Verbindung zwischen Datenpunkten und zum Zeichnen einer polynomialen Regressionslinie. Anstatt die mathematische Formel durchzugehen, zeigen wir Ihnen, wie Sie diese Strategien anwenden.

Im Beispiel unten wurden 18 Autos registriert, als sie eine Mautstelle passierten. Wir haben die Geschwindigkeit des Autos und die Tageszeit (Stunde) aufgezeichnet, als es an uns vorbeigefahren ist.

Die Stunden des Tages werden auf der x-Achse und die Geschwindigkeit auf der y-Achse dargestellt:

import matplotlib.pyplot as plot

xAxis = [
    10,
    20,
    30,
    50,
    60,
    70,
    80,
    90,
    100,
    120,
    130,
    140,
    150,
    160,
    180,
    190,
    210,
    220,
]
yAxis = [96, 95, 84, 65, 60, 59, 65, 55, 71, 75, 78, 86, 88, 79, 95, 98, 99, 100]

plot.scatter(xAxis, yAxis)
plot.show()

Ausgang:

Polynomiale Regression - Streudiagramm

Jetzt zeichnen wir die Polynomregression mit NumPy und Matplotlib.

import numpy
import matplotlib.pyplot as plot

xAxis = [
    10,
    20,
    30,
    50,
    60,
    70,
    80,
    90,
    100,
    120,
    130,
    140,
    150,
    160,
    180,
    190,
    210,
    220,
]
yAxis = [96, 95, 84, 65, 60, 59, 65, 55, 71, 75, 78, 86, 88, 79, 95, 98, 99, 100]

model = numpy.poly1d(numpy.polyfit(xAxis, yAxis, 3))

linesp = numpy.linspace(10, 220, 100)

plot.scatter(xAxis, yAxis)
plot.plot(linesp, model(linesp))
plot.show()

Ausgang:

Polynomische Regression - Graph

Im obigen Beispiel haben wir die Bibliotheken NumPy und Matplotlib zum Zeichnen der Polynomregression verwendet, indem wir die import-Anweisungen verwendet haben. Danach haben wir Arrays für die x-Achse und die y-Achse erstellt wie:

xAxis = [
    10,
    20,
    30,
    50,
    60,
    70,
    80,
    90,
    100,
    120,
    130,
    140,
    150,
    160,
    180,
    190,
    210,
    220,
]
yAxis = [96, 95, 84, 65, 60, 59, 65, 55, 71, 75, 78, 86, 88, 79, 95, 98, 99, 100]

Jetzt haben wir eine Methode der NumPy-Bibliothek zum Erstellen eines Polynommodells wie folgt verwendet:

model = numpy.poly1d(numpy.polyfit(xAxis, yAxis, 3))

Nun legen wir fest, wie die Zeile angezeigt werden soll. In unserem Fall haben wir es von 10 bis 220 gestartet.

linesp = numpy.linspace(10, 220, 100)

Die letzten drei Codezeilen werden verwendet, um das Diagramm zu zeichnen, dann die Regressionslinie und dann das Diagramm anzuzeigen.

plot.scatter(xAxis, yAxis)
plot.plot(linesp, model(linesp))
plot.show()

Die Beziehung zwischen der x-Achse und der y-Achse

Es ist wichtig, die Beziehung zwischen den Achsen (x und y) zu kennen, denn wenn keine Beziehung zwischen ihnen besteht, ist es unmöglich, zukünftige Werte oder Ergebnisse aus der Regression vorherzusagen.

Wir berechnen einen Wert namens R-Squared, um die Beziehung zu messen. Sie reicht von 0 bis 1, wobei 0 keine Beziehung darstellt und 1 100 % Beziehung darstellt.

import numpy
import matplotlib.pyplot as plot
from sklearn.metrics import r2_score

xAxis = [
    10,
    20,
    30,
    50,
    60,
    70,
    80,
    90,
    100,
    120,
    130,
    140,
    150,
    160,
    180,
    190,
    210,
    220,
]
yAxis = [96, 95, 84, 65, 60, 59, 65, 55, 71, 75, 78, 86, 88, 79, 95, 98, 99, 100]

model = numpy.poly1d(numpy.polyfit(xAxis, yAxis, 3))

print(r2_score(yAxis, model(xAxis)))

Ausgang:

0.9047652736246418

Der Wert 0.9 zeigt die starke Beziehung zwischen x und y.

Wenn der Wert sehr niedrig ist, zeigt dies eine sehr schwache Beziehung. Darüber hinaus weist es darauf hin, dass dieser Datensatz für die Polynomregression ungeeignet ist.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Verwandter Artikel - Python Math