Le Hello World des Data Sciences

Même si pour devenir un bon Data Scientist il vous faudra acquérir de bonnes connaissances en maths et dans divers langage de programmation, son approche est à la portée de tous. Voyons ensemble pour fixer les idées un exemple très simple d’algorithme de Machine Learning qui apprend sur des données et est capable de faire des prédictions.

Jeu de données du Titanic

On part du jeu de données classique des données historiques réelles des passagers du Titanic : un tableau (au format CSV) avec une ligne par passager et ses caractéristiques en colonne : s’il a survécu ou pas (1 survivant, 0 non survivant), son sexe (1 homme, 0 femme), la classe de son billet (1, 2 ou 3), son âge, le nombre de membres de sa famille à bord, le prix de son ticket en dollars.
SurvivantClasseSexeAgeFamillePrix
0312217.3
11038171.3
1302607.9
11035153.1
0313508.1
01154051.9
0312421.1
13027211.1
12014130.1
1304216.7

Classification binaire

La tâche est de créer un algorithme qui apprend à prédire la 1ère colonne à partir des autres, c’est-à-dire à classer les passagers du Titanic en 2 groupes, les survivants et ceux qui n'ont pas survécu, en fonction des caractéristiques des passagers.

L’algorithme va apprendre, pour chaque passager, sur le fichier CSV les liens qu’il y a entre les différentes caractéristiques du passager et le fait qu’il ait survécu ou non. Ensuite, étant donné les informations d’un nouveau passager, l’algorithme pourra prédire s’il va survivre ou non.

import numpy
from sklearn.ensemble import RandomForestClassifier

# lecture du fichier CSV
data = numpy.loadtxt("data.csv", delimiter=",")
# on isole la 1ère colonne "Survivant" des données dans y, le reste dans X
X, y = data[:, 1:], data[:, 0]

# instanciation du modèle
model = RandomForestClassifier()
# apprentissage du modèle sur les données
model.fit(X, y)

# prédiction pour une femme de 50 ans, en 1ère classe,
# ayant payé sa place 70$ et ayant 2 membres de sa famille avec elle
print model.predict([1, 0, 50, 2, 70])
# output >>> 1
# le modèle prédit qu’elle va survivre

# prédiction pour une homme de 25 ans, en 3ème classe,
# ayant payé sa place 6$ et étant seul de sa famille à bord
print model.predict([3, 1, 25, 0, 6])
# output >>> 0
# le modèle prédit qu’il ne va pas survivre
Quentin Pleplé
February 2016