Zwei Arten von Zellen
Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 51 von 51.
Ein Labor hat 569 Gewebeproben mit jeweils 30 Zellmessungen untersucht. Zu viele, um sie darzustellen, und kein Auge kann sie sortieren:
Die Diagnose jeder Probe, gutartig oder bösartig, steckt in einem versiegelten Umschlag. Können sich die Zellen auch ohne sie in zwei Gruppen einteilen?
Reduziere die 30 Messwerte mit PCA, bilde Cluster aus dem, was übrig bleibt, und öffne erst dann den Umschlag, um zu sehen, wie nahe die Zellen beieinander lagen.
Aufgabe
SchwerDas Programm liest den Anteil der beizubehaltenden Varianz ein, 0.7 oder mehr; der Starter richtet ein Diagramm ein.
- Skaliere und behalte dann die wenigsten Komponenten, die diesen Anteil erreichen. Gib aus, wie viele es sind und welchen Anteil sie beibehalten.
- Gruppiere diese Komponenten mit k-means: k = 2,
n_init=10,random_state=0. - Öffne den Umschlag: Gib pro Cluster, beginnend mit dem größten, die Diagnosen und die Mehrheit aus. Gib dann die Übereinstimmung aus: den Anteil, der mit der Mehrheit des jeweiligen Clusters übereinstimmt.
- Stelle die ersten beiden Komponenten pro Cluster als Streudiagramm dar und beschrifte sie mit
mostly benignodermostly malignant; füge eine Legende hinzu und zeige das Diagramm an.
Für die ersten 300 Stichproben und 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.877und das zugehörige Diagramm:
Dann beschreibt Coddy deine Lösung.
Probier es selbst
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 Gewebeproben mit jeweils 30 Zellmesswerten
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# Der versiegelte Umschlag: gutartig oder bösartig für jede Probe. Öffne ihn erst am Ende.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# Der beizubehaltende Anteil der Varianz, 0.7 oder mehr
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# Schreibe deinen Code darunter
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Unüberwachtes Lernen
1Gruppen finden
Lernen ohne LabelsÄhnlichkeit messenK-Means von HandK-Means mit scikit-learnRückblick: Fitnessstudiomitglieder4Hierarchisches Clustering
Schrittweises ZusammenführenAgglomerative ModelleDendrogrammeZusammenfassung: Hunderassen7PCA in der Praxis
64 Dimensionen sehenKomponenten als MusterKomprimieren und rekonstruierenPCA vor einem ModellRückblick: Gesichtsscanner10Projekt: Ziffern erkunden
Die Ziffern ansehenMit PCA verkleinernDie Ziffern gruppierenDie Gruppen benennenDie Ausreißer finden2k wählen
TrägheitDie Elbow-MethodeSilhouettenwerteVor dem Clustering skalierenRückblick: LieferzonenÜbe selbstständig: Online-Python-Compiler