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 ajuste mal les données, donc la régression polynomiale est plus appropriée.
Construction de la matrice X̃
Pour créer X̃, 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, PolynomialFeatures est plus pratique. Cela nécessite une structure à deux dimensions :
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Il ajoute également la colonne constante, donc aucune utilisation de sm.add_constant() n'est nécessaire.
Si X est un tableau 1-D, le convertir :
X = X.reshape(-1, 1)
Construction de la régression polynomiale
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 prédiction nécessite de transformer les nouvelles données de la même manière :
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Exemple complet
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()
Essayez différentes valeurs de n pour observer comment la courbe évolue et comment les prédictions se comportent en dehors de l’intervalle initial de la variable explicative — cela introduit le chapitre suivant.
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
What does the `PolynomialFeatures` class do in this context?
How do I choose the best degree `n` for my polynomial regression?
Can you explain why a straight line fits poorly in this example?
Awesome!
Completion rate improved to 5.26
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 ajuste mal les données, donc la régression polynomiale est plus appropriée.
Construction de la matrice X̃
Pour créer X̃, 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, PolynomialFeatures est plus pratique. Cela nécessite une structure à deux dimensions :
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Il ajoute également la colonne constante, donc aucune utilisation de sm.add_constant() n'est nécessaire.
Si X est un tableau 1-D, le convertir :
X = X.reshape(-1, 1)
Construction de la régression polynomiale
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 prédiction nécessite de transformer les nouvelles données de la même manière :
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Exemple complet
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()
Essayez différentes valeurs de n pour observer comment la courbe évolue et comment les prédictions se comportent en dehors de l’intervalle initial de la variable explicative — cela introduit le chapitre suivant.
Merci pour vos commentaires !