0% ont trouvé ce document utile (0 vote)
13 vues8 pages

Classification non-supervisée des iris

Transféré par

Felix Didier Nkomba
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues8 pages

Classification non-supervisée des iris

Transféré par

Felix Didier Nkomba
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Analyse de données

TP Classification non-superviée

Wilson Toussile

Introduction

Ce TP concerne la classification non-superviée par les algorithmes des KMeans et de la classifi-


cation ascendante hiérarchique (cah). Nous appliquons ces méthodes sur des données simulées
et sur des données réelles.
Nous aurons besoin des library suivantes:

import numpy as np
import pandas as pd
import sklearn
from [Link] import KMeans 1
import [Link] as plt 2
from sklearn import datasets 3
from [Link] import PCA 4
from [Link] import StandardScaler 5

1 Importer la classe KMeans


2 Pour les graphiques
3 Pour charger les données iris
4 Importer la classe PCA pour l’ACP
5 La classe StandardScaler permet de centrer et|ou réduire les données

1 Données

Nous considérons les données iris qui décrivent des fleurs. Pour chaque fleur, on a mesuré: -
La longueur et la largeur des pétals - La longueur et la largeur des sépals - l’espèce.

1
iris = datasets.load_iris() 1
df = [Link]([Link], columns=iris.feature_names)
df["Species"] = iris.target_names[[Link]]
print(f"5 1eres lignes: \n\n {[Link]()}\n")
print(f"Dimensions du jeu de données: {[Link]}\n")

1 Charger les données

5 1eres lignes:

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2

Species
0 setosa
1 setosa
2 setosa
3 setosa
4 setosa

Dimensions du jeu de données: (150, 5)

Ĺ Note

• Nous allons ignorer la variable “Species” et faire le clustering sur les 4 autres vari-
ables, qui sont quantitatives.
• Nous allons faire une ACP sur les 4 variables quantitatives pour représenter le nuage
de points dans le plan.

2 ACP sur les variables quantitatives

X = [Link]
scaler = StandardScaler(with_mean=True, with_std=True) 1
Z = scaler.fit_transform(X) 2

2
1 Instancier la classe pour centrer et réduire les données
2 Obtenir les données centrées et réduires

pca = PCA() 1
[Link](Z) 2
C = [Link](Z) 3
print(f"Valeurs propres: {pca.explained_variance_}") 4
print(f"Part d'inertie expliquée par le 1er plan principal: {sum(pca.explained_variance_[0:2]

1 Instancier la classe PCA


2 Calculer les élements de l’ACP
3 Calculer la matrice des composantes princpales

Valeurs propres: [2.93808505 0.9201649 0.14774182 0.02085386]


Part d'inertie expliquée par le 1er plan principal: 95.81320720000163%

Représentation du premier plan principal


Dans la carte des individus, nous utilisons différentes couleurs pour différentes espèces des
fleurs, pour faciliter l’interprétation.

[Link](figsize=(7, 7))
for species in iris.target_names:
indices = [Link](df["Species"] == species)[0]
[Link](C[indices, 0], C[indices, 1], label=species)
[Link](loc="best")
[Link]()

3
2

2
setosa
versicolor
virginica
3 2 1 0 1 2 3
Représentation graphique des inerties des axes principaux

[Link](figsize=(7,7))
[Link]([0, 1, 2, 3], pca.explained_variance_, color="coral")
[Link]([0, 1, 2, 3], pca.explained_variance_, color="steelblue")
[Link]()

4
3.0

2.5

2.0

1.5

1.0

0.5

0.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0

Ď Remarques

• Le premier plan principal représente près de 96% de l’information, donc les conclu-
sions qu’on peut en tirer sont pertinentes.

• Le premier axe principal permet de distinguer l’espèce setosa des deux autres, qui
sont tout de même distinguables.

5
3 Kmeans

Appliquons les KMeans.

kmeans = KMeans(n_clusters=3)
[Link](Z)

[Link](figsize=(7, 7))
for k in range(3):
indices = [Link](kmeans.labels_ == k)[0]
[Link](C[indices, 0], C[indices, 1], label=str(k))
[Link](loc="best")
[Link]()

6
0
1
2
2

3 2 1 0 1 2 3

[Link](iris.target_names[[Link]], kmeans.labels_)

col_0 0 1 2
row_0
setosa 50 0 0
versicolor 0 39 11
virginica 0 14 36

Exercise 3.1.

7
1. Implémenter votre classe MyKMeans, qui hérite de KMeans avec fonctionnalités supplémen-
taires suivantes.

a. Ajouter une méthode qui calcule les sommes des carrés


b. Ajouter une méthode qui calcule le critère 𝐶𝐻

2. Appliquer le critère 𝐶𝐻 pour sélectionner le nombre de classes 𝐾 sur les données iris.

4 Classification Acsendante Hiérarchique (cah)

Exercise 4.1.

1. Faire des recherches web pour trouver une librairie Python permettant de faire la cah
2. Appliquer la cah sur données iris.

Vous aimerez peut-être aussi