Oversamplingsteknikker
Stryg for at vise menuen
Oversampling er en teknik, der bruges til at håndtere ubalancerede datasæt, især når én klasse (minoriteten) har væsentligt færre eksempler end de andre. Ved at øge repræsentationen af minoritetsklassen hjælpes maskinlæringsmodeller med at lære fra alle klasser mere effektivt, hvilket ofte resulterer i bedre forudsigelsespræstation og mere retfærdige resultater. Den mest almindelige fordel ved oversampling er, at det balancerer klassernes fordeling, så algoritmer undgår bias mod majoritetsklassen. Dog kan oversampling også medføre nogle ulemper. Hvis du blot duplikerer eksisterende eksempler, kan din model overtilpasse, idet den lærer mønstre, der er for specifikke for de duplikerede data og ikke generaliserer til nye data. Derudover kan oversampling øge størrelsen på datasættet, hvilket kan føre til længere træningstider og øgede beregningskrav.
1234567891011121314151617181920212223242526272829303132import pandas as pd # Create a sample DataFrame with an imbalanced target data = { "feature1": [1, 2, 3, 4, 5, 6, 7], "target": ["A", "A", "A", "A", "B", "B", "B"] } df = pd.DataFrame(data) # Count original class distribution print("Original class distribution:") print(df["target"].value_counts()) # Oversample minority class "B" to match majority class "A" majority_count = df["target"].value_counts().max() minority_class = df["target"].value_counts().idxmin() # Get all minority class rows minority_rows = df[df["target"] == minority_class] # Calculate how many samples to add samples_to_add = majority_count - len(minority_rows) # Sample with replacement from minority class oversampled_minority = minority_rows.sample(n=samples_to_add, replace=True, random_state=42) # Concatenate original data with new samples df_oversampled = pd.concat([df, oversampled_minority], ignore_index=True) # Show new class distribution print("\nClass distribution after oversampling:") print(df_oversampled["target"].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