Undersamplingsmetoder
Sveip for å vise menyen
Når du arbeider med store datasett som er ubalanserte, oppstår det ofte situasjoner der én klasse (majoritetsklassen) er betydelig større enn en annen (minoritetsklassen). Denne ubalansen kan gjøre det vanskelig for modeller å lære meningsfulle mønstre om minoritetsklassen, noe som fører til dårlig prediktiv ytelse. Undersampling er en teknikk som brukes for å håndtere dette problemet ved å redusere antall eksempler i majoritetsklassen slik at datasettet blir mer balansert.
Undersampling bør vurderes når datasettet er for stort til praktisk behandling, eller når majoritetsklassen dominerer i så stor grad at modellen ignorerer minoritetsklassen. Denne metoden er mest hensiktsmessig når du har et svært stort datasett og kan tillate å miste noen eksempler fra majoritetsklassen uten å ofre viktig informasjon. Den er mindre egnet når datasettet allerede er lite, eller når majoritetsklassen inneholder sjeldne, men viktige eksempler.
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())
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår