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)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas, renommée ici en pd pour simplifier son utilisation dans le code. from sklearn.preprocessing import PolynomialFeatures importe la classe PolynomialFeatures de scikit-learn, qui est utilisée pour générer des caractéristiques polynomiales à partir de données existantes.

    Création d'un DataFrame avec deux variables

    Un DataFrame df est créé avec deux colonnes : 'x1' et 'x2', contenant respectivement les valeurs [1, 2, 3] et [4, 5, 6]. Ces colonnes seront utilisées pour générer des caractéristiques polynomiales.

    Application de PolynomialFeatures avec degré 2

    La classe PolynomialFeatures est initialisée avec un degré=2, ce qui signifie que le modèle va générer des caractéristiques polynomiales jusqu'au second degré (comprenant les carrés des variables ainsi que leurs interactions). Le paramètre include_bias=False indique qu'il ne faut pas inclure une constante (biais) dans les caractéristiques générées.

    La méthode fit_transform() est utilisée pour ajuster l'instance de PolynomialFeatures sur les données et transformer les variables originales en caractéristiques polynomiales. Le résultat est un DataFrame contenant les nouvelles variables polynomiales.

    Affichage des caractéristiques polynomiales

    Le DataFrame df_poly est créé en utilisant les résultats de la transformation et en définissant les noms des colonnes grâce à la méthode get_feature_names_out() qui génère les noms appropriés pour les nouvelles colonnes (y compris les termes d'interaction). print(df_poly) affiche ainsi les caractéristiques polynomiales générées à partir des variables 'x1' et 'x2'.