<jupyter_start><jupyter_text>**420-A58-SF - Algorithmes d'apprentissage non supervisé - Été 2021 - Spécialisation technique en Intelligence Artificielle**MIT License - Copyright (c) 2021 <NAME>![Travaux Pratiques - Regroupement hiérachique](static/01-03-banner.png)**Objectif:** cette séance de travaux pratiques a pour objectif l'analyse de données génomiques (jeu de données NCI60). Les techniques mise en oeuvre seront l'ACP et le regroupement hiérarchique<jupyter_code>%reload_ext autoreload
%autoreload 2
%matplotlib inline
import numpy as np
import pandas as pd

# Le reste des modules sera importé au fur et à mesure des exercices ...
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
# Configuration de la visualisation
sns.set(style="darkgrid")
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
plt.rcParams['figure.figsize']=(12,8)<jupyter_output><empty_output><jupyter_text>1 - Lecture des données Les méthodes d'apprentissage non supervisé comme l'ACP et le clustering sont très populaires en analyse des données génomiques. Ces méthodes seront illustrées sur le jeu de données de biopuces NCI60, quiconsiste en 6830 **mesures d'expression de gènes** sur 64 lignées de cellules cancéreuses. **Exercice 1-1 - À l'aide de la librairie Pandas, lire le fichier de données `NCI60.csv`**<jupyter_code># Compléter cette cellule ~ 1 ligne de code<jupyter_output><empty_output><jupyter_text>**Exercice 1-2 - Combien d'observations et de variables compte le jeu de données ? Que constatez vous ?**<jupyter_code># Compléter cette cellule ~ 1 ligne de code<jupyter_output><empty_output><jupyter_text>**Exercice 1-3 - Une chance, ce jeu de données est fourni avec le type de cancer pour chaque cellule cancéreuse. Lire le fichier `NCI60-labels.csv`**<jupyter_code># Compléter cette cellule ~ 1 ligne de code<jupyter_output><empty_output><jupyter_text>**Exercice 1-4 - Selon vous, est-il nécéssaire de mettre à l'échelle (standardiser ou normaliser) le jeu de données ? Justifier votre réponse.**<jupyter_code># Votre réponse ici<jupyter_output><empty_output><jupyter_text>2 - Analyse en composantes principales (ACP) **Exercice 2-1 - À l'aide de la libraire Scikit-learn, effectuer une analyse en composantes principales. Vérifier la proportion de variance (PVE) et afficher sur un graphique les deux premières composantes et le type de cancer. Que constatez-vous ?**<jupyter_code># Compléter cette cellule (ACP) ~ 3 lignes de code
# Compléter cette cellule (variance) ~ 1 ligne de code
# Compléter cette cellule (affichage) ~ 1 ligne de code<jupyter_output><empty_output><jupyter_text>3 - Regroupement hiérarchique Nous effectuons maintenant le regroupement hiérarchique à l'aide des 4 méthodes de lien vus en cours: Ward, Complete, Average et Single. La distance euclidienne est utilisée comme mesure de dissimilarité. Pour chaque lien, afficher le dendrogramme correspondant (voir `helpers.py`) **Exercice 3-1 - Linkage par défaut (Ward)**<jupyter_code># Compléter cette cellule ~ 2 lignes de code<jupyter_output><empty_output><jupyter_text>**Exercice 3-2 - Linkage Complete**<jupyter_code># Compléter cette cellule ~ 2 lignes de code<jupyter_output><empty_output><jupyter_text>**Exercice 3-3 - Linkage average**<jupyter_code># Compléter cette cellule ~ 2 lignes de code<jupyter_output><empty_output><jupyter_text>**Exercice 3-4 - Linkage Single**<jupyter_code># Compléter cette cellule ~ 2 lignes de code<jupyter_output><empty_output><jupyter_text>**Exercice 3-5 - Compte tenu des résultats précédents, choisir une méthode de lien et seuiller le dendrogramme à la hauteur "optimale"**<jupyter_code># Compléter la cellule ~ 2 lignes de code<jupyter_output><empty_output><jupyter_text>4 - Partitionnement K-moyennes **Exercice 4 - Comparer les résultats précédents avec le partitionnement K-moyennes**<jupyter_code># Compléter la cellule ~ 5-10 lignes de code<jupyter_output><empty_output><jupyter_text>5 - Débruitage des données par ACP (optionnel) **Exercice 5 - Effectuer le regroupement hiérarchique directement sur les premières composantes principales. Comparer les résultats obtenus avec ceux du jeu de données "complet"**<jupyter_code># Compléter la cellule ~ X lignes de code<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08511638843169528, 'fraction_numerical': 0.019045379731953915, 'mean_word_length': 6.385416666666667, 'pattern_counts': {'":': 1, '<': 54, '<?xml version=': 0, '>': 54, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '13', 'dir': 'jupyter-structured-clean-dedup', 'id': '234528', 'license': 'MIT', 'n_tokens_mistral': 1543, 'n_tokens_neox': 1477, 'n_words': 463, 'path': 'nbs/01-03-regroupement-hierarchique/01-03.ipynb', 'repo_name': 'mswawola-cegep/420-a58-sf', 'size': '4261'}