Feature-Verteilung und Zielvariable analysieren
Feature-Ziel-Beziehungen analysieren, Klassenungleichgewicht erkennen und Mutual Information nutzen.
Feature-Verteilung und Zielvariable analysieren ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Warum Features mit der Zielvariable analysieren?
Die Zielvariable ist die Variable, die Sie vorhersagen möchten. Bei der EDA für die Modellierung geht es darum herauszufinden, welche Features tatsächlich mit dieser Zielvariable zusammenhängen.
In dieser Lektion geht es um Diagramme für Feature und Zielvariable, die Messung des Informationsgehalts mit Mutual Information, das Erkennen von Klassenungleichgewichten und das Beheben von Schiefe durch Transformationen.
Feature und Zielvariable – numerische Zielvariable
Bei einer numerischen Zielvariable zeigt ein Streudiagramm von feature und target, ob das Feature ein Signal enthält.
Ein klarer Trend bedeutet, dass das Feature prädiktiv ist; eine formlose Punktwolke spricht dagegen.
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()Feature und Zielvariable – kategoriale Zielvariable
Wenn die Zielvariable ein Klassenlabel ist, vergleichen Sie die Verteilung des Features innerhalb jeder Klasse. Überlappende KDE-Kurven bedeuten, dass das Feature die Klassen nur schlecht trennt; deutlich getrennte Kurven zeigen, dass es nützlich ist.
sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()Klassenverteilungen mit Boxplots vergleichen
Gruppierte Boxplots sind eine weitere Möglichkeit, Beziehungen zwischen Feature und Klasse zu erkennen: Tragen Sie die Zielklasse auf der x-Achse und das Feature auf der y-Achse auf.
Unterschiedliche Mediane zwischen den Klassen zeigen, dass das Feature bei ihrer Unterscheidung hilft.
sns.boxplot(x="churned", y="tenure", data=df)
plt.show()Klassenungleichgewicht erkennen
Ein Klassenungleichgewicht entsteht, wenn eine Zielklasse einer anderen zahlenmäßig deutlich überlegen ist (z. B. 95 % kein Betrug, 5 % Betrug). Dadurch wird die Genauigkeit irreführend und das Modell zugunsten der Mehrheitsklasse verzerrt.
Prüfen Sie dies mit einer einfachen Häufigkeitszählung der Zielvariable.
print(df["churned"].value_counts())
# 0 9200
# 1 800value_counts(normalize=True) für Anteile
Rohe Häufigkeiten können verbergen, wie stark das Ungleichgewicht tatsächlich ist. normalize=True wandelt die Häufigkeiten in Anteile um, sodass Sie sie direkt als Prozentsatz ablesen können.
print(df["churned"].value_counts(normalize=True))
# 0 0.92
# 1 0.08 -> only 8% positive classWarum das Ungleichgewicht wichtig ist
Bei 92 % negativen Fällen erreicht ein Modell, das immer "nein" vorhersagt, eine Genauigkeit von 92 %, ist aber nutzlos. Deshalb sollten Sie das Ungleichgewicht frühzeitig prüfen.
Mögliche Gegenmaßnahmen sind Resampling (Oversampling der Minderheitsklasse / Undersampling der Mehrheitsklasse), Klassengewichte oder Metriken wie Precision, Recall und F1 anstelle der Genauigkeit.
Mutual Information – Informationsgehalt messen
Mutual Information misst, wie stark das Wissen über ein Feature die Unsicherheit über die Zielvariable reduziert. Im Gegensatz zur Korrelation erfasst sie auch nichtlineare Zusammenhänge.
Für Klassifikationsziele stellt scikit-learn mutual_info_classif bereit.
from sklearn.feature_selection import mutual_info_classif
X = df[["balance", "tenure", "rooms"]]
y = df["churned"]
mi = mutual_info_classif(X, y, random_state=42)
print(dict(zip(X.columns, mi)))Features nach Mutual Information sortieren
Wenn Sie die MI-Werte in einer sortierten Series anordnen, erhalten Sie schnell ein Ranking der Feature-Wichtigkeit. Eine höhere MI bedeutet, dass das Feature mehr Informationen über die Zielvariable enthält.
Das ist ein hervorragender früher Filter, bevor Sie ein Modell trainieren.
import pandas as pd
from sklearn.feature_selection import mutual_info_classif
mi = mutual_info_classif(X, y, random_state=42)
scores = pd.Series(mi, index=X.columns).sort_values(ascending=False)
print(scores)Log-Transformation für schiefe Features
Rechtsschiefe Features (Einkommen, Anzahlen, Preise) verhalten sich nach einer Log-Transformation oft besser, da diese den langen Ausläufer zu einer symmetrischeren Form hin komprimiert.
Verwenden Sie np.log1p (den Logarithmus von 1 + x), damit auch Nullen sicher verarbeitet werden.
import numpy as np
df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())Vorher und nachher: Die Transformation visualisieren
Überprüfen Sie immer anhand einer Darstellung vor und nach der Transformation, ob diese geholfen hat. Die logarithmierte Version sollte eher einer symmetrischen Glockenform entsprechen.
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2)
df["income"].hist(ax=ax[0]); ax[0].set_title("Raw")
np.log1p(df["income"]).hist(ax=ax[1]); ax[1].set_title("log1p")
plt.show()Schnelltest: Ein schiefes Feature korrigieren
Ein Feature ist stark rechtsschief und enthält einige Nullwerte.
Zusammenfassung: Feature- und Zielvariablenanalyse
Sie haben gelernt, Features mit der Vorhersage-Zielvariable zu verknüpfen:
- Streu-, KDE- und Boxplots, um das Signal zwischen Feature und Zielvariable zu erkennen
value_counts(normalize=True), um Klassenungleichgewichte zu erkennen und zu quantifizierenmutual_info_classif, um Features nach ihrem Informationsgehalt zu sortieren, einschließlich nichtlinearer Zusammenhängenp.log1p, um die Rechtsschiefe von Features zu reduzieren
Damit ist die explorative Datenanalyse abgeschlossen. Als Nächstes sammeln Sie Daten über Web-APIs.
Häufig gestellte Fragen
Ist die Lektion „Feature-Verteilung und Zielvariable analysieren“ kostenlos?
Ja — der vollständige Text von „Feature-Verteilung und Zielvariable analysieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Feature-Verteilung und Zielvariable analysieren“?
Feature-Ziel-Beziehungen analysieren, Klassenungleichgewicht erkennen und Mutual Information nutzen. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Feature-Verteilung und Zielvariable analysieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- EDA-Workflow und Datenprofiling
- Univariate Analyse
- Bivariate und multivariate Analyse
- Feature-Verteilung und Zielvariable analysieren