La classification permet d’attribuer une classe d’appartenance (label dans la terminologie du machine learning) discrète à des données à partir de certaines variables explicatives (features dans la même terminologie). Les algorithmes de classification sont nombreux. L’un des plus intuitifs et les plus fréquemment rencontrés sont les SVM (Support Vector Machine). Ce chapitre illustre les enjeux de la classification à partir de ce modèle sur les données de vote aux élections présidentielles US de 2020.

Author

Lino Galiana

Published

July 15, 2023

Download nbviewer Onyxia Onyxia
Binder Open In Colab githubdev

Nous allons partir du même jeu de données que précédemment, c’est-à-dire les résultats des élections US 2020 présentés dans l’introduction de cette partie : les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible sur Github.

import requests

url = 'https://raw.githubusercontent.com/linogaliana/python-datascientist/master/content/modelisation/get_data.py'
r = requests.get(url, allow_redirects=True)
open('getdata.py', 'wb').write(r.content)

import getdata
votes = getdata.create_votes_dataframes()

Pour ce TP, nous aurons besoin des packages suivants :

import pandas as pd
import matplotlib.pyplot as plt

La méthode des SVM (Support Vector Machines)

L’une des méthodes de machine learning les plus utilisées en classification sont les SVM (Support Vector Machines). Il s’agit de trouver, dans un système de projection adéquat (noyau ou kernel), les paramètres de l’hyperplan (en fait d’un hyperplan à marges maximales) séparant les classes de données :

Application

Pour appliquer un modèle de classification, il nous faut trouver une variable dichotomique. Le choix naturel est de prendre la variable dichotomique qu’est la victoire ou défaite d’un des partis.

Même si les Républicains ont perdu en 2020, ils l’ont emporté dans plus de comtés (moins peuplés). Nous allons considérer que la victoire des Républicains est notre label 1 et la défaite 0.

A l’issue de la question 3, le classifieur avec C = 1 devrait avoir les performances suivantes :

Score
Accuracy 0.882637
Recall 0.897297
Precision 0.968872
F1 0.931712

La matrice de confusion associée prend cette forme:

A l’issue de la question 6, le nouveau classifieur avec devrait avoir les performances suivantes :

Score
Accuracy 0.882637
Recall 0.897297
Precision 0.968872
F1 0.931712

Et la matrice de confusion associée :

Back to top

Citation

BibTeX citation:
@book{galiana2023,
  author = {Galiana, Lino},
  title = {Python Pour La Data Science},
  date = {2023},
  url = {https://pythonds.linogaliana.fr/},
  doi = {10.5281/zenodo.8229676},
  langid = {en}
}
For attribution, please cite this work as:
Galiana, Lino. 2023. Python Pour La Data Science. https://doi.org/10.5281/zenodo.8229676.