Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Costruzione della Regressione Polinomiale | Sezione
Practice
Projects
Quizzes & Challenges
Quiz
Challenges
/
Fondamenti di Apprendimento Supervisionato

bookCostruzione della Regressione Polinomiale

Caricamento del file

Carichiamo poly.csv e lo ispezioniamo:

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

Successivamente, visualizzare la relazione:

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

Una retta si adatta male, quindi la regressione polinomiale è più appropriata.

Ecco la sezione riscritta e adattata per Scikit-learn.

Costruzione della matrice trasformata

Per creare feature polinomiali, si possono aggiungere manualmente le feature al quadrato:

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

Tuttavia, per gradi superiori, la classe PolynomialFeatures da sklearn.preprocessing è molto più semplice ed efficiente. Richiede una struttura 2-D (DataFrame o array 2-D):

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)

Parametri

La classe PolynomialFeatures dispone di diversi parametri importanti:

  • degree (default=2): il grado delle feature polinomiali. Ad esempio, se degree=3, genera .
  • interaction_only (default=False): se impostato su True, vengono prodotte solo le feature di interazione (ad esempio, ), evitando termini come .
  • include_bias (default=True): se impostato su True, aggiunge una colonna di uni (colonna di bias).

Importante: poiché LinearRegression calcola automaticamente l'intercetta, solitamente si imposta include_bias=False per evitare ridondanze.

Costruzione della regressione polinomiale

Una volta ottenute le feature trasformate (X_poly), è possibile utilizzare il modello standard LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Per effettuare previsioni è necessario trasformare i nuovi dati utilizzando la stessa istanza del trasformatore prima di passarli al modello:

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

Esempio completo

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

Prova a modificare il valore di degree (n) per osservare come cambia la curva. Noterai che gradi più alti si adattano meglio ai dati di addestramento ma possono comportarsi in modo irregolare fuori dall'intervallo—questo introduce il prossimo capitolo sull'Overfitting.

question mark

Considera il seguente codice. In quale caso il codice verrà eseguito senza errori?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 12

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookCostruzione della Regressione Polinomiale

Scorri per mostrare il menu

Caricamento del file

Carichiamo poly.csv e lo ispezioniamo:

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

Successivamente, visualizzare la relazione:

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

Una retta si adatta male, quindi la regressione polinomiale è più appropriata.

Ecco la sezione riscritta e adattata per Scikit-learn.

Costruzione della matrice trasformata

Per creare feature polinomiali, si possono aggiungere manualmente le feature al quadrato:

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

Tuttavia, per gradi superiori, la classe PolynomialFeatures da sklearn.preprocessing è molto più semplice ed efficiente. Richiede una struttura 2-D (DataFrame o array 2-D):

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)

Parametri

La classe PolynomialFeatures dispone di diversi parametri importanti:

  • degree (default=2): il grado delle feature polinomiali. Ad esempio, se degree=3, genera .
  • interaction_only (default=False): se impostato su True, vengono prodotte solo le feature di interazione (ad esempio, ), evitando termini come .
  • include_bias (default=True): se impostato su True, aggiunge una colonna di uni (colonna di bias).

Importante: poiché LinearRegression calcola automaticamente l'intercetta, solitamente si imposta include_bias=False per evitare ridondanze.

Costruzione della regressione polinomiale

Una volta ottenute le feature trasformate (X_poly), è possibile utilizzare il modello standard LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

Per effettuare previsioni è necessario trasformare i nuovi dati utilizzando la stessa istanza del trasformatore prima di passarli al modello:

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

Esempio completo

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

Prova a modificare il valore di degree (n) per osservare come cambia la curva. Noterai che gradi più alti si adattano meglio ai dati di addestramento ma possono comportarsi in modo irregolare fuori dall'intervallo—questo introduce il prossimo capitolo sull'Overfitting.

question mark

Considera il seguente codice. In quale caso il codice verrà eseguito senza errori?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 12
some-alt