So führen sie eine polynomregression in python durch


Die Regressionsanalyse wird verwendet, um die Beziehung zwischen einer oder mehreren erklärenden Variablen und einer Antwortvariablen zu quantifizieren.

Die gebräuchlichste Art der Regressionsanalyse ist dieeinfache lineare Regression , die verwendet wird, wenn eine Prädiktorvariable und eine Antwortvariable in einer linearen Beziehung stehen.

Manchmal ist die Beziehung zwischen einer Prädiktorvariablen und einer Antwortvariablen jedoch nichtlinear.

Beispielsweise kann die wahre Beziehung quadratisch sein:

Oder es kann kubisch sein:

In diesen Fällen ist es sinnvoll, eine polynomielle Regression zu verwenden, die die nichtlineare Beziehung zwischen Variablen berücksichtigen kann.

In diesem Tutorial wird erläutert, wie Sie eine Polynomregression in Python durchführen.

Beispiel: Polynomielle Regression in Python

Angenommen, wir haben die folgende Prädiktorvariable (x) und Antwortvariable (y) in Python:

 x = [2, 3, 4, 5, 6, 7, 7, 8, 9, 11, 12]
y = [18, 16, 15, 17, 20, 23, 25, 28, 31, 30, 29]

Wenn wir ein einfaches Streudiagramm dieser Daten erstellen, können wir erkennen, dass die Beziehung zwischen x und y eindeutig nicht linear ist:

 import matplotlib.pyplot as plt

#create scatterplot 
plt.scatter(x, y)

Es wäre daher nicht sinnvoll, ein lineares Regressionsmodell an diese Daten anzupassen. Stattdessen können wir versuchen, ein polynomiales Regressionsmodell mit Grad 3 anzupassen, indem wir die Funktion numpy.polyfit() verwenden:

 import numpy as np

#polynomial fit with degree = 3
model = np.poly1d(np.polyfit(x, y, 3))

#add fitted polynomial line to scatterplot
polyline = np.linspace(1, 12, 50)
plt.scatter(x, y)
plt.plot(polyline, model(polyline))
plt.show() 

Polynomielle Regressionslinie in Python

Wir können die angepasste polynomiale Regressionsgleichung erhalten, indem wir die Modellkoeffizienten drucken:

 print(model)

poly1d([ -0.10889554, 2.25592957, -11.83877127, 33.62640038])

Die angepasste polynomiale Regressionsgleichung lautet:

y = -0,109x 3 + 2,256x 2 – 11,839x + 33,626

Diese Gleichung kann verwendet werden, um den erwarteten Wert der Antwortvariablen bei gegebenem Wert der erklärenden Variablen zu ermitteln.

Angenommen, x = 4. Der erwartete Wert für die Antwortvariable y wäre:

y = -0,109(4) 3 + 2,256(4) 2 – 11,839(4) + 33,626= 15,39 .

Wir können auch eine kurze Funktion schreiben, um das R-Quadrat des Modells zu erhalten, das den Anteil der Varianz in der Antwortvariablen darstellt, der durch die Prädiktorvariablen erklärt werden kann.

 #define function to calculate r-squared
def polyfit(x, y, degree):
    results = {}
    coeffs = numpy.polyfit(x, y, degree)
    p = numpy.poly1d(coeffs)
    #calculate r-squared
    yhat = p(x)
    ybar = numpy.sum(y)/len(y)
    ssreg = numpy.sum((yhat-ybar)**2)
    sstot = numpy.sum((y - ybar)**2)
    results['r_squared'] = ssreg / sstot

    return results

#find r-squared of polynomial model with degree = 3
polyfit(x, y, 3)

{'r_squared': 0.9841113454245183}

In diesem Beispiel beträgt das R-Quadrat des Modells 0,9841 .

Dies bedeutet, dass 98,41 % der Variation der Antwortvariablen durch die Prädiktorvariablen erklärt werden können.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert