Programming lesson
Naive Bayes zur Tumor-Klassifikation: Ein praxisnahes Tutorial für CSCI 184
Lerne in diesem Tutorial, wie du mit Naive Bayes einen Krebs-Datensatz klassifizierst – inklusive Datenvorbereitung, Modellwahl und Evaluierung. Perfekt für deine CSCI 184 Hausaufgabe.
Naive Bayes zur Tumor-Klassifikation – Schritt für Schritt erklärt
Die Klassifikation von Tumoren mithilfe von Machine Learning ist ein klassisches Anwendungsgebiet, das auch im Jahr 2026 nichts an Aktualität verloren hat. In diesem Tutorial zeigen wir dir, wie du mit Python und Naive Bayes einen Krebs-Datensatz analysierst – genau wie in deiner CSCI 184 Hausaufgabe. Wir nutzen den bekannten Wisconsin Breast Cancer Dataset (569 Zeilen, 32 Spalten) und gehen alle geforderten Schritte durch: Daten laden, explorieren, visualisieren, codieren, trainieren und evaluieren. Am Ende erhältst du ein solides Grundverständnis, um deine eigene Lösung zu schreiben.
1. Daten laden und verstehen
Zuerst lädst du den Datensatz 'cancer.csv' mit pandas in ein DataFrame. Der Befehl pd.read_csv('cancer.csv') erledigt das. Danach gibst du das DataFrame und seine Form mit df.shape aus. Die Zielvariable ist 'diagnosis' – sie enthält 'M' (maligne) und 'B' (benigne).
import pandas as pd
df = pd.read_csv('cancer.csv')
print(df)
print('Shape:', df.shape)Als Nächstes werden die Spaltennamen und Datentypen ausgegeben – wichtig, um zu sehen, ob alle Features numerisch sind (was hier der Fall ist).
print(df.dtypes)2. Visualisierung der linearen Trennbarkeit
Ein entscheidender Schritt ist das Plotten von 'Radius Mean' gegen 'Texture Mean', eingefärbt nach der Diagnose. Damit prüfst du, ob die Daten linear trennbar sind. In unserem Datensatz überlappen die Klassen leicht, aber eine klare Trennung ist erkennbar – Naive Bayes kann damit gut umgehen.
import matplotlib.pyplot as plt
plt.scatter(df['radius_mean'], df['texture_mean'], c=df['diagnosis'].map({'M':'red','B':'blue'}))
plt.xlabel('Radius Mean')
plt.ylabel('Texture Mean')
plt.show()3. Zielvariable codieren und Daten aufteilen
Da die Zielvariable kategorisch ist, verwendest du Label Encoding: 'M' wird zu 1, 'B' zu 0. Dann trennst du Features (X) und Ziel (Y) und teilst die Daten in 70% Training und 30% Test.
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['diagnosis'] = le.fit_transform(df['diagnosis'])
X = df.drop('diagnosis', axis=1)
Y = df['diagnosis']
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=42)4. Wahl des geeigneten Naive-Bayes-Modells
Für kontinuierliche, normalverteilte Features wie hier ist der Gaussian Naive Bayes die beste Wahl. Andere Varianten wie Bernoulli oder Multinomial eignen sich für diskrete oder binäre Daten. Wir begründen unsere Wahl im Report: Der Datensatz enthält Messwerte (z.B. Radius, Textur), die annähernd normalverteilt sind – daher Gaussian.
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, Y_train)5. Modell evaluieren
Nach dem Training lassen wir das Modell auf dem Testset Vorhersagen treffen und drucken die Performance-Matrix (Konfusionsmatrix, Precision, Recall, F1-Score).
from sklearn.metrics import classification_report, confusion_matrix
y_pred = model.predict(X_test)
print(confusion_matrix(Y_test, y_pred))
print(classification_report(Y_test, y_pred))Eine hohe Genauigkeit (oft >95%) zeigt, dass Naive Bayes gut für diese Aufgabe geeignet ist.
6. Trends und Praxisbezug
Naive Bayes wird nicht nur in der Medizin eingesetzt, sondern auch in KI-gestützten Apps zur Spam-Erkennung oder Stimmungsanalyse. Im Jahr 2026 nutzen viele Health-Tech-Startups ähnliche Algorithmen, um Krebs frühzeitig zu erkennen. Wenn du deinen Code als .ipynb-Datei einreichst, achte darauf, alle Zellen sauber auszuführen – dein Tutor wird die Ergebnisse überprüfen.
Fazit
Mit diesem Tutorial hast du die Grundlagen für deine CSCI 184 Hausaufgabe gelegt. Du weißt jetzt, wie man einen Datensatz lädt, visualisiert, codiert, ein Naive-Bayes-Modell trainiert und evaluiert. Vergiss nicht, deinen Report mit Screenshots der Performance-Matrix zu ergänzen und als PDF abzugeben. Viel Erfolg!