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?
Génial!
Completion taux amélioré à 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 !