Bygga Polynomregression
Laddar fil
Vi laddar poly.csv och inspekterar den:
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())
Visualisera sedan relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rät linje passar dåligt, så polynomregression är mer lämplig.
Bygga X̃-matrisen
För att skapa X̃ kan kvadrerade funktioner läggas till manuellt:
df['Feature_squared'] = df['Feature'] ** 2
Men för högre grader är PolynomialFeatures enklare. Den kräver en tvådimensionell struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den lägger också till konstantkolumnen, så sm.add_constant() behövs inte.
Om X är 1-D, konvertera det:
X = X.reshape(-1, 1)
Bygga polynomregression
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
För att förutsäga krävs att ny data transformeras på samma sätt:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fullständigt exempel
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Prova olika värden på n för att se hur kurvan förändras och hur prediktionerna beter sig utanför det ursprungliga funktionsintervallet—detta leder vidare till nästa kapitel.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 5.26
Bygga Polynomregression
Svep för att visa menyn
Laddar fil
Vi laddar poly.csv och inspekterar den:
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())
Visualisera sedan relationen:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
En rät linje passar dåligt, så polynomregression är mer lämplig.
Bygga X̃-matrisen
För att skapa X̃ kan kvadrerade funktioner läggas till manuellt:
df['Feature_squared'] = df['Feature'] ** 2
Men för högre grader är PolynomialFeatures enklare. Den kräver en tvådimensionell struktur:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Den lägger också till konstantkolumnen, så sm.add_constant() behövs inte.
Om X är 1-D, konvertera det:
X = X.reshape(-1, 1)
Bygga polynomregression
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
För att förutsäga krävs att ny data transformeras på samma sätt:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Fullständigt exempel
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Prova olika värden på n för att se hur kurvan förändras och hur prediktionerna beter sig utanför det ursprungliga funktionsintervallet—detta leder vidare till nästa kapitel.
Tack för dina kommentarer!