Costruzione della Regressione Polinomiale
Caricamento del file
Si carica poly.csv e si esegue un'ispezione:
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())
Successivamente, visualizzazione della relazione:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Una retta si adatta male, quindi la regressione polinomiale è più appropriata.
Costruzione della matrice X̃
Per creare X̃, è possibile aggiungere manualmente le feature al quadrato:
df['Feature_squared'] = df['Feature'] ** 2
Ma per gradi superiori, PolynomialFeatures è più semplice. Richiede una struttura 2-D:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Aggiunge anche la colonna costante, quindi non è necessario sm.add_constant().
Se X è monodimensionale, convertirla:
X = X.reshape(-1, 1)
Costruzione della regressione polinomiale
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()
La previsione richiede la trasformazione dei nuovi dati nello stesso modo:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Esempio completo
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 diversi valori di n per osservare come cambia la curva e come si comportano le previsioni al di fuori dell'intervallo originale della feature—questo introduce il prossimo capitolo.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 5.26
Costruzione della Regressione Polinomiale
Scorri per mostrare il menu
Caricamento del file
Si carica poly.csv e si esegue un'ispezione:
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())
Successivamente, visualizzazione della relazione:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Una retta si adatta male, quindi la regressione polinomiale è più appropriata.
Costruzione della matrice X̃
Per creare X̃, è possibile aggiungere manualmente le feature al quadrato:
df['Feature_squared'] = df['Feature'] ** 2
Ma per gradi superiori, PolynomialFeatures è più semplice. Richiede una struttura 2-D:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Aggiunge anche la colonna costante, quindi non è necessario sm.add_constant().
Se X è monodimensionale, convertirla:
X = X.reshape(-1, 1)
Costruzione della regressione polinomiale
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()
La previsione richiede la trasformazione dei nuovi dati nello stesso modo:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Esempio completo
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 diversi valori di n per osservare come cambia la curva e come si comportano le previsioni al di fuori dell'intervallo originale della feature—questo introduce il prossimo capitolo.
Grazie per i tuoi commenti!