Construction de la Régression Polynomiale
Chargement du fichier
Nous chargeons poly.csv et l'inspectons :
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())
Ensuite, visualiser la relation :
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, sidegree=3, elle génère .interaction_only(par défaut=False) : siTrue, seules les caractéristiques d'interaction sont produites (par exemple, ), en évitant les termes comme .include_bias(par défaut=True) : siTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 3.33
Construction de la Régression Polynomiale
Glissez pour afficher le menu
Chargement du fichier
Nous chargeons poly.csv et l'inspectons :
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())
Ensuite, visualiser la relation :
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
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, sidegree=3, elle génère .interaction_only(par défaut=False) : siTrue, seules les caractéristiques d'interaction sont produites (par exemple, ), en évitant les termes comme .include_bias(par défaut=True) : siTrue, 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
123456789101112131415161718192021222324252627282930import 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()
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.
Merci pour vos commentaires !