Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellung Einer Polynomialen Regression | Abschnitt
Grundlagen des Überwachten Lernens

bookErstellung Einer Polynomialen Regression

Datei laden

Wir laden poly.csv und überprüfen den Inhalt:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Anschließend die Beziehung visualisieren:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Eine Gerade passt schlecht, daher ist die Polynomregression besser geeignet.

Hier ist der überarbeitete Abschnitt, angepasst für Scikit-learn.

Aufbau der transformierten Matrix

Um Polynom-Features zu erstellen, könnten quadrierte Merkmale manuell hinzugefügt werden:

df['Feature_squared'] = df['Feature'] ** 2

Für höhere Grade ist jedoch die Klasse PolynomialFeatures aus sklearn.preprocessing wesentlich einfacher und effizienter. Sie erfordert eine 2D-Struktur (DataFrame oder 2D-Array):

from sklearn.preprocessing import PolynomialFeatures

X = df[['Feature']]
# Create the transformer
poly = PolynomialFeatures(degree=2, include_bias=False)
# Transform the data
X_poly = poly.fit_transform(X)

Parameter

Die Klasse PolynomialFeatures verfügt über mehrere wichtige Parameter:

  • degree (Standardwert=2): Der Grad der Polynom-Features. Zum Beispiel, wenn degree=3, werden entsprechende Terme erzeugt.
  • interaction_only (Standardwert=False): Wenn True, werden nur Interaktionsterme erzeugt (z. B. ), wodurch Terme wie vermieden werden.
  • include_bias (Standardwert=True): Wenn True, wird eine Spalte mit Einsen (Bias-Spalte) hinzugefügt.

Wichtig: Da LinearRegression den Achsenabschnitt automatisch berechnet, wird üblicherweise include_bias=False gesetzt, um Redundanz zu vermeiden.

Aufbau der Polynomialen Regression

Sobald die transformierten Merkmale (X_poly) vorliegen, kann das Standardmodell LinearRegression verwendet werden.

from sklearn.linear_model import LinearRegression

y = df['Target']

# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)

Für Vorhersagen müssen neue Daten mit derselben Transformer-Instanz transformiert werden, bevor sie an das Modell übergeben werden:

# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)

Vollständiges Beispiel

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures # Load data df = pd.read_csv(file_link) X = df[['Feature']] y = df['Target'] # 1. Create Polynomial Features n = 2 poly = PolynomialFeatures(degree=n, include_bias=False) X_poly = poly.fit_transform(X) # 2. Train Linear Regression model = LinearRegression() model.fit(X_poly, y) # 3. Predict on new data X_new = np.linspace(-0.1, 1.5, 80).reshape(-1, 1) X_new_poly = poly.transform(X_new) y_pred = model.predict(X_new_poly) # Visualization plt.scatter(X, y, label='Data') plt.plot(X_new, y_pred, color='red', label=f'Degree {n}') plt.legend() plt.show()
copy

Versuchen Sie, den degree (n) zu ändern, um zu sehen, wie sich die Kurve verändert. Sie werden feststellen, dass höhere Grade die Trainingsdaten besser anpassen, sich jedoch außerhalb des Bereichs unvorhersehbar verhalten können—dies führt zum nächsten Kapitel über Overfitting.

question mark

Betrachten Sie den folgenden Code. In welchem Fall läuft der Code fehlerfrei?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 12

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookErstellung Einer Polynomialen Regression

Swipe um das Menü anzuzeigen

Datei laden

Wir laden poly.csv und überprüfen den Inhalt:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Anschließend die Beziehung visualisieren:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Eine Gerade passt schlecht, daher ist die Polynomregression besser geeignet.

Hier ist der überarbeitete Abschnitt, angepasst für Scikit-learn.

Aufbau der transformierten Matrix

Um Polynom-Features zu erstellen, könnten quadrierte Merkmale manuell hinzugefügt werden:

df['Feature_squared'] = df['Feature'] ** 2

Für höhere Grade ist jedoch die Klasse PolynomialFeatures aus sklearn.preprocessing wesentlich einfacher und effizienter. Sie erfordert eine 2D-Struktur (DataFrame oder 2D-Array):

from sklearn.preprocessing import PolynomialFeatures

X = df[['Feature']]
# Create the transformer
poly = PolynomialFeatures(degree=2, include_bias=False)
# Transform the data
X_poly = poly.fit_transform(X)

Parameter

Die Klasse PolynomialFeatures verfügt über mehrere wichtige Parameter:

  • degree (Standardwert=2): Der Grad der Polynom-Features. Zum Beispiel, wenn degree=3, werden entsprechende Terme erzeugt.
  • interaction_only (Standardwert=False): Wenn True, werden nur Interaktionsterme erzeugt (z. B. ), wodurch Terme wie vermieden werden.
  • include_bias (Standardwert=True): Wenn True, wird eine Spalte mit Einsen (Bias-Spalte) hinzugefügt.

Wichtig: Da LinearRegression den Achsenabschnitt automatisch berechnet, wird üblicherweise include_bias=False gesetzt, um Redundanz zu vermeiden.

Aufbau der Polynomialen Regression

Sobald die transformierten Merkmale (X_poly) vorliegen, kann das Standardmodell LinearRegression verwendet werden.

from sklearn.linear_model import LinearRegression

y = df['Target']

# Initialize and train the model
model = LinearRegression()
model.fit(X_poly, y)

Für Vorhersagen müssen neue Daten mit derselben Transformer-Instanz transformiert werden, bevor sie an das Modell übergeben werden:

# Transform new data
X_new_poly = poly.transform(X_new)
# Predict
y_pred = model.predict(X_new_poly)

Vollständiges Beispiel

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures # Load data df = pd.read_csv(file_link) X = df[['Feature']] y = df['Target'] # 1. Create Polynomial Features n = 2 poly = PolynomialFeatures(degree=n, include_bias=False) X_poly = poly.fit_transform(X) # 2. Train Linear Regression model = LinearRegression() model.fit(X_poly, y) # 3. Predict on new data X_new = np.linspace(-0.1, 1.5, 80).reshape(-1, 1) X_new_poly = poly.transform(X_new) y_pred = model.predict(X_new_poly) # Visualization plt.scatter(X, y, label='Data') plt.plot(X_new, y_pred, color='red', label=f'Degree {n}') plt.legend() plt.show()
copy

Versuchen Sie, den degree (n) zu ändern, um zu sehen, wie sich die Kurve verändert. Sie werden feststellen, dass höhere Grade die Trainingsdaten besser anpassen, sich jedoch außerhalb des Bereichs unvorhersehbar verhalten können—dies führt zum nächsten Kapitel über Overfitting.

question mark

Betrachten Sie den folgenden Code. In welchem Fall läuft der Code fehlerfrei?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 12
some-alt