Scikit Learn - Modélisation linéaire étendue

Ce chapitre se concentre sur les fonctions polynomiales et les outils de pipelining de Sklearn.

Introduction aux caractéristiques polynomiales

Les modèles linéaires formés sur des fonctions non linéaires de données maintiennent généralement les performances rapides des méthodes linéaires. Cela leur permet également d'adapter une gamme beaucoup plus large de données. C'est la raison pour laquelle, dans l'apprentissage automatique, de tels modèles linéaires, entraînés sur des fonctions non linéaires, sont utilisés.

Un tel exemple est qu'une régression linéaire simple peut être étendue en construisant des caractéristiques polynomiales à partir des coefficients.

Mathématiquement, supposons que nous ayons un modèle de régression linéaire standard, alors pour les données 2D, cela ressemblerait à ceci -

$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} $$

Maintenant, nous pouvons combiner les caractéristiques dans des polynômes du second ordre et notre modèle ressemblera à ceci:

$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} + W_ {3} X_ {1} X_ {2} + W_ {4} X_1 ^ 2 + W_ { 5} X_2 ^ 2 $$

Ce qui précède est toujours un modèle linéaire. Ici, nous avons vu que la régression polynomiale résultante est dans la même classe de modèles linéaires et peut être résolue de manière similaire.

Pour ce faire, scikit-learn fournit un module nommé PolynomialFeatures. Ce module transforme une matrice de données d'entrée en une nouvelle matrice de données d'un degré donné.

Paramètres

Le tableau suivant comprend les paramètres utilisés par PolynomialFeatures module

Sr. Non Paramètre et description
1

degree - entier, par défaut = 2

Il représente le degré des caractéristiques polynomiales.

2

interaction_only - Booléen, par défaut = false

Par défaut, il est faux, mais s'il est défini sur true, les fonctionnalités qui sont les produits des fonctionnalités d'entrée les plus distinctes sont produites. Ces fonctionnalités sont appelées fonctionnalités d'interaction.

3

include_bias - Booléen, par défaut = true

Il comprend une colonne de biais, c'est-à-dire la caractéristique dans laquelle toutes les puissances polynomiales sont nulles.

4

order - str in {'C', 'F'}, par défaut = 'C'

Ce paramètre représente l'ordre du tableau de sortie dans le cas dense. L'ordre «F» signifie plus rapide à calculer, mais d'un autre côté, il peut ralentir les estimateurs ultérieurs.

Les attributs

Le tableau suivant comprend les attributs utilisés par PolynomialFeatures module

Sr. Non Attributs et description
1

powers_ - tableau, forme (n_output_features, n_input_features)

Il montre que powers_ [i, j] est l'exposant de la jième entrée dans la ième sortie.

2

n_input_features _ - int

Comme son nom l'indique, il donne le nombre total d'entités d'entrée.

3

n_output_features _ - int

Comme son nom l'indique, il donne le nombre total de caractéristiques de sortie polynomiales.

Exemple d'implémentation

Suivre les utilisations de script Python PolynomialFeatures transformateur pour transformer un tableau de 8 en forme (4,2) -

from sklearn.preprocessing import PolynomialFeatures
import numpy as np
Y = np.arange(8).reshape(4, 2)
poly = PolynomialFeatures(degree=2)
poly.fit_transform(Y)

Production

array(
   [
      [ 1., 0., 1., 0., 0., 1.],
      [ 1., 2., 3., 4., 6., 9.],
      [ 1., 4., 5., 16., 20., 25.],
      [ 1., 6., 7., 36., 42., 49.]
   ]
)

Rationalisation à l'aide des outils Pipeline

Le type de prétraitement ci-dessus, c'est-à-dire la transformation d'une matrice de données d'entrée en une nouvelle matrice de données d'un degré donné, peut être rationalisé avec le Pipeline outils, qui sont essentiellement utilisés pour enchaîner plusieurs estimateurs en un seul.

Exemple

Les scripts python ci-dessous utilisant les outils Pipeline de Scikit-learn pour rationaliser le prétraitement (s'adapteront à des données polynomiales d'ordre 3).

#First, import the necessary packages.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
import numpy as np

#Next, create an object of Pipeline tool
Stream_model = Pipeline([('poly', PolynomialFeatures(degree=3)), ('linear', LinearRegression(fit_intercept=False))])

#Provide the size of array and order of polynomial data to fit the model.
x = np.arange(5)
y = 3 - 2 * x + x ** 2 - x ** 3
Stream_model = model.fit(x[:, np.newaxis], y)

#Calculate the input polynomial coefficients.
Stream_model.named_steps['linear'].coef_

Production

array([ 3., -2., 1., -1.])

La sortie ci-dessus montre que le modèle linéaire formé sur des entités polynomiales est capable de récupérer les coefficients polynomiaux d'entrée exacts.