41
Apprentissage automatique utilisant Scikit-Learn Nesrine Ammar 25-10-2019 PROGRES

Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage automatique utilisant Scikit-Learn

Nesrine Ammar

25-10-2019

PROGRES

Page 2: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage

Données d’apprentissage

Algorithme d’apprentissage

hNouvelles exemple

Prédictions

Page 3: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage

Import sklearnImport pandas as pdFrom sklearn.linear_model import LinearRegression

dataset = pd.read_csv(‘filename.csv’)train_set, test_set = train_test_split(housing, test_size=0.2, random_state=42)

y_train, y_test= train_set[‘labels’], test_set[‘labels’]X_train, X_test= train_set.drop(‘labels’, axis=1), test_set.drop(‘labels’, axis=1)

Lin_reg =LinearRegression()Lin_reg.fit(X_train, y_train)

Page 4: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage

Import sklearnImport pandas as pdImport numpy as np

Some_data = X_train[:3]Some_labels = y_train[:3]Print (‘predictions:’, lin_reg.predict(some_data))

predictions = lin_reg.predict(X_test)

mae = np.mean(abs(predictions - y_test))

print(‘LinearRegression Performance on the test set: MAE = ‘, mae)

Page 5: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage

X1 X2 Xn y…

→ Non spam

→ Spam

Page 6: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Apprentissage

X1 X2 Xn y…

X_train

X_test

y_train

y_test

70%

30%

Page 7: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Classification binaire

From sklearn.linear_model import DecisionTreeClassifier

Sgd_clf = DecisionTreeClassifier()Sgd_clf.fit(X_train, y_train)

Sgd_clf.predict([un mail])>> True

From sklearn.model_selection import cross_val_scorecross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=‘accuracy’)>> [0.9502, 0.96565, 0.96495]

Page 8: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Classification binaire

From sklearn.linear_model import DecisionTreeClassifier

Sgd_clf = DecisionTreeClassifier()Sgd_clf.fit(X_train, y_train)

Sgd_clf.predict([un mail])>> spam

Sgd_clf.predict_proba([un mail])>> [0.1, 0.9]

Page 9: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Classification binaire

Cross_val_score→ permet d’évaluer un model utilisant la technique k-folds en divisant le train_set en k-folds, ensuite permet de faire des prédictions et évaluer sur chaque fold avec un modèle entrainé sur le reste des folds.

From sklearn.model_selection import cross_val_score

Cross_val_score(model, X_train, y_train, cv=3, scoring=accuracy)>> [0.9, 0,91, 0,99]

Page 10: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

Un moyen bien meilleur d'évaluer les performances d'un classificateur est d'examiner la matrice de confusion. l'idée générale est de compter le nombre de fois où des instances de la classe A sont classées en classe B.

La matrice de confusion est un outil utilisé en apprentissage supervisé servant à mesurer la qualité d'un système de classification.

Pour calculer la matrice de confusion → nous avons besoin d’avoir un ensemble de prédictions afin de les comparer aux labels actuels

On peut faire les prédictions sur le test_set→ on le laisse à la fin du projet

→ On va calculer les prédictions sur le train_set utilisant la cross validation

Page 11: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

Page 12: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

From sklearn.model_selection import cross_val_predict

tree= DecisionTreeClassifier()Tree.fit(X_train, y_train)Y_train_predictions = tree.predict(X_train)

From sklearn.metrics import confusion_matrixConfusion_matrix(y_train, y_train_predictions)>> [[53272, 1307],

[1077, 4344]]

Page 13: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

From sklearn.metrics import confusion_matrix

Confusion_matrix(y_train, y_train_perfect_predictions)>> [[53272, 0],

[0, 4344]]

Page 14: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

Négative

Négative

Positive

Positive

Actuels

Prédictions

Page 15: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

Négative

Négative

Positive

Positive

Actuels

Prédictions

TN

TP

FP

FN

Page 16: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion (parfaite)

Négative

Négative

Positive

Positive

Actuels

Prédictions

TN

TP

FP

FN

Page 17: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Matrice de confusion

Négative

Négative

Positive

Positive

Actuels

Prédictions

Vrai négatif

Vrai positifFaux négatif

Faux positif

Page 18: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Précision/Rappel

La matrice nous donne encore plus d’information:

→ Proportion des prédictions positives (correctes) parmi les valeurs qui ont été prédites comme positives

→ Proportion des prédictions positives (correctes) parmi les valeurs positives dans l’ensemble de données testées.

Page 19: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Précision/Rappel

Négative

Négative

Positive

Positive

Actuels

Prédictions

Précision

Rappel

Page 20: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Précision/Rappel

From sklearn.metrics import precision_score, recall_score

Precison_score(y_train_5, y_train_predictions)>> 0.7689

Recall_score(y_train_5, y_train_predictions)>>0.8013

Page 21: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Multi-classification

Tree = DecisionTreeClassifier()Tree.fit(X_train, y_train)Tree.predict([un chiifre])>> 6

tree.predict_proba([un chiffre])>>[0, 0, 0, 0.2, 0.1, 0, 0.9, 0, 0]

y_predictions = tree.predict(X_train)confusion_M = confusion_matrix(y_train, y_predictions)Print confusion_M

Page 22: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Multi-classification

Actuels

Prédictions

Page 23: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

PandasIn [1]: df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],

...: 'B': ['B0', 'B1', 'B2', 'B3'],

...: 'C': ['C0', 'C1', 'C2', 'C3'],

...: 'D': ['D0', 'D1', 'D2', 'D3']},

...: index=[0, 1, 2, 3])

...:

In [2]: df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],...: 'B': ['B4', 'B5', 'B6', 'B7'],...: 'C': ['C4', 'C5', 'C6', 'C7'],...: 'D': ['D4', 'D5', 'D6', 'D7']},...: index=[4, 5, 6, 7])...:

In [3]: df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],...: 'B': ['B8', 'B9', 'B10', 'B11'],...: 'C': ['C8', 'C9', 'C10', 'C11'],...: 'D': ['D8', 'D9', 'D10', 'D11']},...: index=[8, 9, 10, 11])...:

In [4]: frames = [df1, df2, df3]

In [5]: result = pd.concat(frames)

Page 24: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Pandas

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],...: 'D': ['D2', 'D3', 'D6', 'D7'],...: 'F': ['F2', 'F3', 'F6', 'F7']},...: index=[2, 3, 6, 7])...:

In [9]: result = pd.concat([df1, df4], axis=1, sort=False)

Page 25: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Pandas

In [10]: result = pd.concat([df1, df4], axis=1, join='inner’) → Intersection selon les indexes

Page 26: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Pandas

In [12]: result = df1.append(df2) result = df1.append(df4)

Page 27: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

PandasIn [38]: left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],

....: 'A': ['A0', 'A1', 'A2', 'A3'],

....: 'B': ['B0', 'B1', 'B2', 'B3']})

....:

In [39]: right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],....: 'C': ['C0', 'C1', 'C2', 'C3'],....: 'D': ['D0', 'D1', 'D2', 'D3']})....:

In [40]: result = pd.merge(left, right, on='key')

Page 28: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Projet: classification des types d’objets connectés

Les attributs de flux de trafic:

→ Un flux est une succession de paquets entre une source et une destination caractérisé par le 4-

tuplet (IP source, IP destination, port source, port destination).

• La taille moyenne des paquets ainsi que la taille maximum et minimum;

• Le temps moyen des temps inter-arrivées des paquets d’un flux;

• La taille du flux mesurée en nombre de paquets ;

• Les protocoles utilisés : HTTP, HTTPS, SSDP, mDNS, TFTP, DHCP, DNS, NTP, BOOTP, TCP, UDP.

Page 29: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Projet: classification des types d’objets connectés

Page 30: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Projet: classification des types d’objets connectés

Les attributs textuels:Certaines données peuvent être extraites des messages en clair au niveau applicatif.Ces données textuelles contiennent des mots clés caractérisant l’objet connecté. Tout d’abord,les données sont nettoyées en éliminant les symboles et les chiffres, afin d’obtenir un ensemble demots uniques. Ensuite, les données textuelles sont modélisées par un sac de mots : on génère un vecteurbinaire `a partir de l’ensemble des mots uniques extraits dont la valeur est définie à 1 si le motexiste dans la description de l’objet, 0 sinon.

• Le nom du fabricant à partir de l’adresse MAC;• Le nom de l’objet `a partir de DHCP;• Le nom du fabricant, le modèle, le nom familier et le type `a partir de la description XML partagée• par le protocole de découverte UPnP;• Le nom local et les services offerts par l’objet `a partir des enregistrement du protocole mDNS;• Le système d’exploitation, le modèle et parfois le type à partir de l’agent utilisateur inclus dans la

requête HTTP, principalement pour les objets mobiles.

Page 31: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Projet: classification des types d’objets connectés

Page 32: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Internet des objets

Page 33: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

Bonjour

• Créé par Apple

• Protocole de découverte de services dans le réseau

• Basé sur le protocole DNS-SD qui utilize mDNS (message multicast) au lieu de DNS (message unicast)

• Basé sur le principe zero-conf:

1. Permet à l’objet d’obtenir une adresse IP même en cas d’absence de DHCP

2. Permet à l’objet d’obtenir un nom local même en cas d’absence du serveur DNS

3. Permet au objet de publier et découvrir les services d’autres objets

Page 34: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

mDNS: Type de records

Page 35: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

mDNS: Type de records

Page 36: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

UPnP

• UPnP → Universal Plug and Play

• Fournie un réseau domestique invisible

• Supporte une architecture pour l'auto-configuration et l’auto-description des objets connectés

• Peut supporter la zéro configuration dans le réseau

Page 37: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

UPnP

Page 38: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

UPnP: NOTIFY

NOTIFY * HTTP/1.1

HOST: 239.255.255.250:1900

CACHE-CONTROL: max-age = seconds until advertisement expires

LOCATION: URL for UPnP description for root device

NT: search target

NTS: ssdp:alive

USN: advertisement UUID

Page 39: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

UPnP: Description d’un objet

Page 40: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

UPnP: Description d’un objet<?xml version="1.0"?><root xmlns="urn:schemas-upnp-org:device-1-0"><specVersion>

<major>1</major><minor>0</minor>

</specVersion><URLBase>http://192.168.0.4:5431</URLBase><device>

<deviceType>urn:schemas-upnp-org:device:tvdevice:1</deviceType><friendlyName>UPnP Television Emulator</friendlyName><manufacturer>TV Manufacturer Name</manufacturer><manufacturerURL>http://www.manufacturer.com</manufacturerURL><modelDescription>UPnP Television Device Emulator 1.0</modelDescription><modelName>TVEmulator</modelName><modelNumber>1.0</modelNumber><modelURL>http://www.manufacturer.com/TVEmulator/</modelURL><serialNumber>123456789001</serialNumber><UDN>uuid:Upnp-TVEmulator-1_0-1234567890001</UDN><UPC>123456789</UPC>………………..

Page 41: Apprentissage automatique utilisant Scikit-Learntixeuil/m2r/uploads/Main/PR... · 2019. 12. 4. · Nesrine Ammar 25-10-2019 PROGRES. Apprentissage Données d’apprentissage Algorithme

User agent à partir de l’entête HTTP