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 pas x1²)
    include_bias True pour inclure une colonne de biais (1), False sinon
    order 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 :

    1. Définition des données : df contient deux variables numériques x1 et x2.
    2. 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.
    3. Création du DataFrame enrichi : fit_transform(df) génère de nouvelles colonnes.

    Remarques:

    • Si degree=3, on inclurait aussi x1³, x2³, et x1*x2², etc.
    • L’option interaction_only=True exclut les termes au carré (x1², x2²) et ne garde que x1*x2.
    • L’utilisation de PolynomialFeatures peut augmenter la complexité du modèle et entraîner du surajustement si le degré est trop élevé.