Erstellung Einer Polynomialen Regression
Datei laden
Wir laden poly.csv und überprüfen den Inhalt:
1234import 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())
Anschließend die Beziehung visualisieren:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, wenndegree=3, werden entsprechende Terme erzeugt.interaction_only(Standardwert=False): WennTrue, werden nur Interaktionsterme erzeugt (z. B. ), wodurch Terme wie vermieden werden.include_bias(Standardwert=True): WennTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 3.33
Erstellung Einer Polynomialen Regression
Swipe um das Menü anzuzeigen
Datei laden
Wir laden poly.csv und überprüfen den Inhalt:
1234import 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())
Anschließend die Beziehung visualisieren:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, wenndegree=3, werden entsprechende Terme erzeugt.interaction_only(Standardwert=False): WennTrue, werden nur Interaktionsterme erzeugt (z. B. ), wodurch Terme wie vermieden werden.include_bias(Standardwert=True): WennTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Danke für Ihr Feedback!