Oversampling-Techniken
Swipe um das Menü anzuzeigen
Oversampling ist eine Technik zur Bewältigung unausgewogener Datensätze, insbesondere wenn eine Klasse (die Minderheitsklasse) deutlich weniger Stichproben als andere aufweist. Durch die Erhöhung der Repräsentation der Minderheitsklasse wird es Maschinenlernmodellen ermöglicht, effektiver aus allen Klassen zu lernen, was häufig zu einer besseren Vorhersageleistung und gerechteren Ergebnissen führt. Der häufigste Vorteil von Oversampling besteht darin, die Klassenverteilung auszugleichen, sodass Algorithmen eine Verzerrung zugunsten der Mehrheitsklasse vermeiden können. Allerdings kann Oversampling auch einige Nachteile mit sich bringen. Wenn lediglich vorhandene Stichproben dupliziert werden, kann das Modell überanpassen, indem es Muster lernt, die zu spezifisch für die duplizierten Daten sind, und dadurch Schwierigkeiten bei der Generalisierung auf neue Daten bekommt. Zudem kann Oversampling die Größe des Datensatzes erhöhen, was zu längeren Trainingszeiten und einem höheren Rechenaufwand führen kann.
1234567891011121314151617181920212223242526272829303132import pandas as pd # Create a sample DataFrame with an imbalanced target data = { "feature1": [1, 2, 3, 4, 5, 6, 7], "target": ["A", "A", "A", "A", "B", "B", "B"] } df = pd.DataFrame(data) # Count original class distribution print("Original class distribution:") print(df["target"].value_counts()) # Oversample minority class "B" to match majority class "A" majority_count = df["target"].value_counts().max() minority_class = df["target"].value_counts().idxmin() # Get all minority class rows minority_rows = df[df["target"] == minority_class] # Calculate how many samples to add samples_to_add = majority_count - len(minority_rows) # Sample with replacement from minority class oversampled_minority = minority_rows.sample(n=samples_to_add, replace=True, random_state=42) # Concatenate original data with new samples df_oversampled = pd.concat([df, oversampled_minority], ignore_index=True) # Show new class distribution print("\nClass distribution after oversampling:") print(df_oversampled["target"].value_counts())
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen