Techniques de sous-échantillonnage
Glissez pour afficher le menu
Lors du traitement de grands ensembles de données déséquilibrés, il est fréquent de rencontrer des situations où une classe (la classe majoritaire) est largement plus représentée qu'une autre (la classe minoritaire). Ce déséquilibre peut rendre difficile l'apprentissage de motifs pertinents concernant la classe minoritaire par les modèles, ce qui conduit à de faibles performances prédictives. L'undersampling est une technique utilisée pour résoudre ce problème en réduisant le nombre d'échantillons de la classe majoritaire afin de rendre l'ensemble de données plus équilibré.
L'undersampling est à envisager lorsque votre ensemble de données est trop volumineux pour un traitement pratique ou lorsque la classe majoritaire domine à tel point que le modèle ignore la classe minoritaire. Cependant, cette méthode est surtout adaptée lorsque vous disposez d'un très grand ensemble de données et que vous pouvez vous permettre de perdre certains échantillons de la classe majoritaire sans sacrifier d'informations importantes. Elle est moins appropriée si l'ensemble de données est déjà petit ou si la classe majoritaire contient des exemples rares mais importants.
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())
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion