Formule du modèle

Modèles linéaires généralisés en Python

Ita Cirovic Donev

Data Science Consultant

Formule et matrice de modèle

Début du schéma avec les sources de données X et Y.

Modèles linéaires généralisés en Python

Formule et matrice de modèle

Schéma de la formule

Modèles linéaires généralisés en Python

Formule et matrice de modèle

Schéma de la matrice de modèle

Modèles linéaires généralisés en Python

Formule et matrice de modèle

Schéma de l'entrée de la classe glm.

Modèles linéaires généralisés en Python

Matrice de modèle

  • Matrice de modèle : $y \sim \bold{X}$

  • Formule du modèle

    'y ~ x1 + x2'
    
  • Vérifier la structure de la matrice de modèle
    from patsy import dmatrix
    dmatrix('x1 + x2')
    
  Intercept  x1  x2
          1   1   4
          1   2   5
          1   3   6
Modèles linéaires généralisés en Python

Transformation de variables

import numpy as np
'y ~ x1 + np.log(x2)'
dmatrix('x1 + np.log(x2)')
DesignMatrix with shape (3, 3)
  Intercept  x1  np.log(x2)
          1   1     1.38629
          1   2     1.60944
          1   3     1.79176
Modèles linéaires généralisés en Python

Centrage et normalisation

  • Transformations avec état
'y ~ center(x1) + standardize(x2)'
dmatrix('center(x1) + standardize(x2)')
DesignMatrix with shape (3, 3)
  Intercept  center(x1)  standardize(x2)
          1          -1         -1.22474
          1           0          0.00000
          1           1          1.22474
Modèles linéaires généralisés en Python

Créer votre propre transformation

def my_transformation(x):
  return 4 * x
dmatrix('x1 + x2 + my_transformation(x2)')
DesignMatrix with shape (3, 4)
  Intercept  x1  x2  my_transformation(x2)
          1   1   4                     16
          1   2   5                     20
          1   3   6                     24
Modèles linéaires généralisés en Python

Opérations arithmétiques

x1 = np.array([1, 2, 3])
x2 = np.array([4,5,6])

dmatrix('I(x1 + x2'))
DesignMatrix with shape (3, 2)
  Intercept  I(x1 + x2)
          1           5
          1           7
          1           9
x1 = [1, 2, 3]
x2 = [4,5,6]

dmatrix('I(x1 + x2)')
DesignMatrix with shape (6, 2)
  Intercept  I(x1 + x2)
          1           1
          1           2
          1           3
          1           4
          1           5
          1           6
Modèles linéaires généralisés en Python

Coder les données catégorielles

Type de couleur : rouge, vert, bleu

Modèles linéaires généralisés en Python

Coder les données catégorielles

Schéma du type de couleur : rouge, vert, bleu et observations de couleur dans les données

Modèles linéaires généralisés en Python

Coder les données catégorielles

Schéma d'un codage à indicateurs (one-hot) avec les couleurs rouge, vert et bleu.

Modèles linéaires généralisés en Python

Codage avec Patsy

  • Les chaînes et booléens sont codés automatiquement
  • Numérique $\rightarrow$ catégoriel
    • fonction C()
  • Groupe de référence
    • Par défaut : premier groupe
    • Treatment
    • levels
Modèles linéaires généralisés en Python

La fonction C()

  • Variable numérique
    dmatrix('color', data = crab)
    
DesignMatrix with shape (173, 2)
  Intercept  color
          1      2
          1      3
          1      1
  [... rows omitted]
  • Combien de niveaux ?
    crab['color'].value_counts()
    
2    95
3    44
4    22
1    12
Modèles linéaires généralisés en Python

La fonction C()

  • Variable catégorielle
    dmatrix('C(color)', data = crab)
    
DesignMatrix with shape (173, 4)
  Intercept  C(color)[T.2]  C(color)[T.3]  C(color)[T.4]
          1              1              0              0
          1              0              1              0
          1              0              0              0
  [... rows omitted]
Modèles linéaires généralisés en Python

Changer le groupe de référence

dmatrix('C(color, Treatment(4))', data = crab)
DesignMatrix with shape (173, 4)
  Intercept  C(color)[T.1]  C(color)[T.2]  C(color)[T.3]  
          1              0              1              0 
          1              0              0              1 
          1              1              0              0 
  [... rows omitted]
Modèles linéaires généralisés en Python

Changer le groupe de référence

l = [1, 2, 3,4]
dmatrix('C(color, levels = l)', data = crab)
DesignMatrix with shape (173, 4)
  Intercept  C(color)[T.2]  C(color)[T.3]   C(color)[T.4] 
          1               1            0               0     
          1               0            1               0
          1               0            0               0 
  [... rows omitted]
Modèles linéaires généralisés en Python

Interceptions multiples

'y ~ C(color)-1'
dmatrix('C(color)-1', data = crab)
DesignMatrix with shape (173, 4)
  C(color)[1]  C(color)[2]  C(color)[3]  C(color)[4]
            0            1            0            0
            0            0            1            0
            1            0            0            0
  [... rows omitted]
Modèles linéaires généralisés en Python

Passons à la pratique !

Modèles linéaires généralisés en Python

Preparing Video For Download...