Undersamplingsteknikker
Stryg for at vise menuen
Ved håndtering af store datasæt, der er ubalancerede, støder du ofte på situationer, hvor én klasse (majoritetsklassen) er langt større end en anden (minoritetsklassen). Denne ubalance kan gøre det vanskeligt for modeller at lære meningsfulde mønstre om minoritetsklassen, hvilket fører til dårlig prædiktiv ydeevne. Undersampling er en teknik, der bruges til at løse dette problem ved at reducere antallet af eksempler i majoritetsklassen, så datasættet bliver mere balanceret.
Undersampling bør overvejes, når dit datasæt er for stort til praktisk behandling, eller når majoritetsklassen dominerer i en sådan grad, at modellen ignorerer minoritetsklassen. Undersampling er mest hensigtsmæssig, når du har et meget stort datasæt og kan undvære nogle eksempler fra majoritetsklassen uden at miste vigtig information. Det er mindre egnet, når datasættet allerede er lille, eller når majoritetsklassen indeholder sjældne, men vigtige 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())
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat