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 :
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
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 undegré=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ètreinclude_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 dePolynomialFeatures
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éthodeget_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'
.