Utilisation de PolynomialFeatures pour générer des interactions
L’utilisation de PolynomialFeatures permet de générer de nouvelles variables en créant des combinaisons polynomiales des caractéristiques existantes. Cette technique est utilisée pour capturer des relations non linéaires entre les variables dans un modèle de machine learning. PolynomialFeatures génère des interactions entre les variables en les élevant à des puissances ou en combinant plusieurs colonnes sous forme de produits. Par exemple, si vous avez deux variables 𝑥 1 x 1 et 𝑥 2 x 2 , la transformation peut générer de nouvelles variables comme 𝑥 1 2 x 1 2 , 𝑥 2 2 x 2 2 , et 𝑥 1 × 𝑥 2 x 1 ×x 2 . Cela permet au modèle d’apprendre des relations complexes entre les caractéristiques. Cette technique est couramment utilisée dans les modèles de régression, en particulier lorsque la relation entre les variables est non linéaire, pour améliorer la performance du modèle. Il est important de noter que l’utilisation excessive de caractéristiques polynomiales peut entraîner un surapprentissage (overfitting).
Fonctions :
-
PolynomialFeatures()
PolynomialFeatures() génère des interactions entre les variables et ajoute des termes polynomiaux jusqu’à un certain degré.
Importation :
from sklearn.preprocessing import PolynomialFeatures
Attributs :
Paramètre Description degree
Degré des interactions (ex: 2
pour inclure les carrés et les produits croisés)interaction_only
True
pour ne générer que des interactions sans puissances (ex:x1 * x2
, mais pasx1²
)include_bias
True
pour inclure une colonne de biais (1),False
sinonorder
Spécifie l’ordre des termes générés ( C
pour col-major,F
pour row-major)Exemple de code :
import pandas as pd from sklearn.preprocessing import PolynomialFeatures # Création d'un DataFrame avec deux variables df = pd.DataFrame({ 'x1': [1, 2, 3], 'x2': [4, 5, 6] }) # Application de PolynomialFeatures avec degré 2 poly = PolynomialFeatures(degree=2, include_bias=False) df_poly = pd.DataFrame(poly.fit_transform(df), columns=poly.get_feature_names_out(df.columns)) print(df_poly)
Explication du code :
- Définition des données :
df
contient deux variables numériquesx1
etx2
. - Transformation avec
PolynomialFeatures
:degree=2
ajoute les carrés (x1²
,x2²
) et les produits croisés (x1*x2
).include_bias=False
empêche l’ajout d’une colonne constante.
- Création du DataFrame enrichi :
fit_transform(df)
génère de nouvelles colonnes.
Remarques:
- Si
degree=3
, on inclurait aussix1³
,x2³
, etx1*x2²
, etc. - L’option
interaction_only=True
exclut les termes au carré (x1²
,x2²
) et ne garde quex1*x2
. - L’utilisation de
PolynomialFeatures
peut augmenter la complexité du modèle et entraîner du surajustement si le degré est trop élevé.
- Définition des données :