Tecniche di undersampling
Scorri per mostrare il menu
Quando si lavora con grandi set di dati sbilanciati, spesso si verificano situazioni in cui una classe (la classe maggioritaria) supera di gran lunga un'altra (la classe minoritaria). Questo squilibrio può rendere difficile per i modelli apprendere schemi significativi relativi alla classe minoritaria, portando a prestazioni predittive scadenti. L'undersampling è una tecnica utilizzata per affrontare questo problema riducendo il numero di campioni nella classe maggioritaria, in modo che il set di dati risulti più bilanciato.
L'undersampling è da considerare quando il set di dati è troppo grande per essere elaborato in modo pratico o quando la classe maggioritaria domina a tal punto che il modello ignora la classe minoritaria. Tuttavia, l'undersampling è più appropriato quando si dispone di un set di dati molto ampio e si può permettere di perdere alcuni campioni della classe maggioritaria senza sacrificare informazioni importanti. È meno adatto quando il set di dati è già piccolo o la classe maggioritaria contiene esempi rari ma rilevanti.
123456789101112131415161718192021222324import pandas as pd # Create a sample imbalanced dataset data = { "feature": range(20), "class": ["majority"] * 16 + ["minority"] * 4 } df = pd.DataFrame(data) # Count the number of samples in each class class_counts = df["class"].value_counts() minority_count = class_counts["minority"] # Randomly sample from the majority class to match the minority class count majority_sample = df[df["class"] == "majority"].sample(n=minority_count, random_state=42) minority_sample = df[df["class"] == "minority"] # Combine samples to get a balanced dataset balanced_df = pd.concat([majority_sample, minority_sample]) print("Original class distribution:") print(df["class"].value_counts()) print("\nBalanced class distribution after undersampling:") print(balanced_df["class"].value_counts())
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione