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
Fantastico!
Completion tasso migliorato a 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!