Menu
CoddyTech

Due tipi di celle

Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 51 di 51.

Un laboratorio ha misurato 569 campioni di tessuto, ciascuno con 30 misurazioni cellulari. Sono troppi per rappresentarli in un grafico, e nessuno riesce a classificarli a occhio:

Una griglia di 24 campioni per 30 misurazioni, ogni cella colorata dal blu per i valori bassi al rosso per quelli alti, un mosaico senza uno schema chiaro

La diagnosi di ogni campione, benigna o maligna, è contenuta in una busta sigillata. Le cellule possono dividersi in due tipi senza conoscerla?

Riduci le 30 misurazioni con PCA, raggruppa ciò che resta e solo allora apri la busta per vedere quanto si sono avvicinate le cellule.

challenge icon

Sfida

Difficile

Il programma legge la quota di varianza da mantenere, 0.7 o più; il codice iniziale prepara un grafico.

  1. Scala, poi mantieni il minor numero di componenti che raggiunge quella quota. Stampa quante sono e quanta varianza mantengono.
  2. Raggruppa quelle componenti con k-means: k = 2, n_init=10, random_state=0.
  3. Apri la busta: per ogni cluster, dal più grande al più piccolo, stampa le diagnosi e la maggioranza. Poi stampa l’accordo: la quota che corrisponde alla maggioranza del cluster.
  4. Mostra le prime due componenti di ogni cluster in un grafico a dispersione, con l’etichetta mostly benign o mostly malignant; aggiungi la legenda e mostra il grafico.

Per i primi 300 campioni e 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.877

e il relativo grafico:

I primi 300 campioni sulle prime due componenti: un cluster prevalentemente benigno a sinistra e un cluster prevalentemente maligno che si estende verso destra, con una legenda

Poi Coddy descrive il tuo risultato.

Provalo tu

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 campioni di tessuto, 30 misurazioni cellulari per ciascuno
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# La busta sigillata: benigno o maligno per ogni campione. Aprila solo alla fine.
diagnosis = pd.Series(cancer.target_names[cancer.target])

# La quota di varianza da conservare, 0.7 o più
share = float(input())

fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online