Deux types de cellules
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 51 sur 51.
Un laboratoire a mesuré 569 échantillons de tissus, avec 30 mesures cellulaires chacun. Trop nombreux pour être représentés sur un graphique, et aucun œil ne peut les trier :
Le diagnostic de chaque échantillon, bénin ou malin, se trouve dans une enveloppe scellée. Les cellules peuvent-elles se répartir en deux catégories sans en avoir connaissance ?
Réduisez les 30 mesures avec PCA, regroupez ce qu’il en reste, puis ouvrez seulement l’enveloppe pour voir à quel point les cellules se sont rapprochées.
Défi
DifficileLe programme lit la part de variance à conserver, 0.7 ou plus ; le code de départ prépare un graphique.
- Mets les données à l’échelle, puis conserve le plus petit nombre de composantes permettant d’atteindre cette part. Affiche leur nombre et la part qu’elles conservent.
- Regroupe ces composantes avec k-means : k = 2,
n_init=10,random_state=0. - Ouvre l’enveloppe : pour chaque cluster, en commençant par le plus grand, affiche les diagnostics et la classe majoritaire. Puis affiche le taux de concordance : la part des échantillons correspondant à la classe majoritaire de leur cluster.
- Représente les deux premières composantes de chaque cluster dans un nuage de points, avec la légende
mostly benignoumostly malignant; affiche la légende, puis le graphique.
Pour les 300 premiers échantillons et 0.8 :
Components for 80% of the variance: 5 (they keep 0.844)
Cluster of 175: 146 benign, 29 malignant, so mostly benign
Cluster of 125: 8 benign, 117 malignant, so mostly malignant
Agreement with the diagnosis: 0.877et leur graphique :
Ensuite, Coddy décrit le tien.
Essayez vous-même
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# 569 échantillons de tissus, 30 mesures cellulaires chacun
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# L’enveloppe scellée : bénin ou malin pour chaque échantillon. Ne l’ouvrez qu’à la fin.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# La part de variance à conserver, 0.7 ou plus
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage non supervisé
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraison8Détection des anomalies
Repérer les éléments atypiquesForêt d’isolationFacteur local d’anomalieScores d’anomalieRécapitulatif : surveillance des serveurs11Défis finaux
Segments de coursesSurveillance des fraudes bancairesAmas d’étoilesDeux types de cellulesEntraînez-vous par vous-même : Compilateur Python en ligne