Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Construction de la Régression Polynomiale | Section
Fondamentaux de l'apprentissage supervisé

bookConstruction de la Régression Polynomiale

Chargement du fichier

Nous chargeons poly.csv et l'inspectons :

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

Ensuite, visualiser la relation :

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

Une droite s'ajuste mal, donc la régression polynomiale est plus appropriée.

Voici la section réécrite et adaptée pour Scikit-learn.

Construction de la matrice transformée

Pour créer des caractéristiques polynomiales, il est possible d'ajouter manuellement les caractéristiques au carré :

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

Mais pour des degrés plus élevés, la classe PolynomialFeatures de sklearn.preprocessing est bien plus simple et efficace. Elle nécessite une structure en 2 dimensions (DataFrame ou tableau 2D) :

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)

Paramètres

La classe PolynomialFeatures possède plusieurs paramètres importants :

  • degree (par défaut=2) : le degré des caractéristiques polynomiales. Par exemple, si degree=3, elle génère .
  • interaction_only (par défaut=False) : si True, seules les caractéristiques d'interaction sont produites (par exemple, ), en évitant les termes comme .
  • include_bias (par défaut=True) : si True, ajoute une colonne de uns (colonne de biais).

Important : comme LinearRegression calcule automatiquement l'ordonnée à l'origine, on règle généralement include_bias=False pour éviter la redondance.

Construction de la régression polynomiale

Une fois que nous avons les caractéristiques transformées (X_poly), nous pouvons utiliser le modèle standard LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

La prédiction nécessite de transformer les nouvelles données en utilisant la même instance du transformateur avant de les passer au modèle :

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

Exemple complet

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

Essayez de modifier le degree (n) pour observer comment la courbe évolue. Vous remarquerez que des degrés plus élevés ajustent mieux les données d'entraînement mais peuvent se comporter de manière imprévisible en dehors de l'intervalle — cela introduit le prochain chapitre sur le surapprentissage.

question mark

Considérez le code suivant. Dans quel cas le code s'exécutera-t-il sans erreur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 12

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

bookConstruction de la Régression Polynomiale

Glissez pour afficher le menu

Chargement du fichier

Nous chargeons poly.csv et l'inspectons :

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

Ensuite, visualiser la relation :

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

Une droite s'ajuste mal, donc la régression polynomiale est plus appropriée.

Voici la section réécrite et adaptée pour Scikit-learn.

Construction de la matrice transformée

Pour créer des caractéristiques polynomiales, il est possible d'ajouter manuellement les caractéristiques au carré :

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

Mais pour des degrés plus élevés, la classe PolynomialFeatures de sklearn.preprocessing est bien plus simple et efficace. Elle nécessite une structure en 2 dimensions (DataFrame ou tableau 2D) :

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)

Paramètres

La classe PolynomialFeatures possède plusieurs paramètres importants :

  • degree (par défaut=2) : le degré des caractéristiques polynomiales. Par exemple, si degree=3, elle génère .
  • interaction_only (par défaut=False) : si True, seules les caractéristiques d'interaction sont produites (par exemple, ), en évitant les termes comme .
  • include_bias (par défaut=True) : si True, ajoute une colonne de uns (colonne de biais).

Important : comme LinearRegression calcule automatiquement l'ordonnée à l'origine, on règle généralement include_bias=False pour éviter la redondance.

Construction de la régression polynomiale

Une fois que nous avons les caractéristiques transformées (X_poly), nous pouvons utiliser le modèle standard LinearRegression.

from sklearn.linear_model import LinearRegression

y = df['Target']

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

La prédiction nécessite de transformer les nouvelles données en utilisant la même instance du transformateur avant de les passer au modèle :

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

Exemple complet

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

Essayez de modifier le degree (n) pour observer comment la courbe évolue. Vous remarquerez que des degrés plus élevés ajustent mieux les données d'entraînement mais peuvent se comporter de manière imprévisible en dehors de l'intervalle — cela introduit le prochain chapitre sur le surapprentissage.

question mark

Considérez le code suivant. Dans quel cas le code s'exécutera-t-il sans erreur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 12
some-alt