Alikokoistamistekniikat
Pyyhkäise näyttääksesi valikon
Kun käsitellään suuria ja epätasapainoisia aineistoja, törmätään usein tilanteisiin, joissa yksi luokka (enemmistöluokka) on huomattavasti suurempi kuin toinen (vähemmistöluokka). Tämä epätasapaino voi vaikeuttaa mallien kykyä oppia merkityksellisiä piirteitä vähemmistöluokasta, mikä johtaa heikkoon ennustustarkkuuteen. Alinäytteistys on tekniikka, jolla tätä ongelmaa pyritään ratkaisemaan vähentämällä enemmistöluokan havaintojen määrää, jotta aineistosta tulee tasapainoisempi.
Alinäytteistystä kannattaa harkita, kun aineisto on liian suuri käytännön käsittelyyn tai kun enemmistöluokka hallitsee niin voimakkaasti, että malli jättää vähemmistöluokan huomiotta. Alinäytteistys sopii parhaiten tilanteisiin, joissa aineisto on erittäin suuri ja enemmistöluokan havaintoja voidaan poistaa menettämättä olennaista tietoa. Se ei ole suositeltavaa, jos aineisto on jo valmiiksi pieni tai jos enemmistöluokassa on harvinaisia mutta tärkeitä esimerkkejä.
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())
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme