Undersamplingstekniker
Svep för att visa menyn
Vid hantering av stora datamängder som är obalanserade stöter du ofta på situationer där en klass (majoritetsklassen) är betydligt större än en annan (minoritetsklassen). Denna obalans kan göra det svårt för modeller att lära sig meningsfulla mönster om minoritetsklassen, vilket leder till sämre prediktiv prestanda. Undersampling är en teknik som används för att hantera detta problem genom att minska antalet prover i majoritetsklassen så att datamängden blir mer balanserad.
Undersampling bör övervägas när din datamängd är för stor för praktisk bearbetning eller när majoritetsklassen dominerar i sådan utsträckning att modellen ignorerar minoritetsklassen. Det är mest lämpligt när du har en mycket stor datamängd och kan avvara vissa prover från majoritetsklassen utan att förlora viktig information. Det är mindre lämpligt när datamängden redan är liten eller när majoritetsklassen innehåller sällsynta men viktiga exempel.
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())
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal