Kategoristen Muuttujien Koodaus
Kategoriset muuttujat ovat tietosi ominaisuuksia, jotka edustavat luokkia eivätkä numeerisia arvoja. Esimerkkejä ovat värit kuten "red", "green" ja "blue" tai tunnisteet kuten "yes" ja "no". Koneoppimisalgoritmit vaativat syötteenä numeerista dataa, joten nämä kategoriset muuttujat täytyy muuntaa numeeriseen muotoon ennen mallien käyttöä. Tätä prosessia kutsutaan koodaukseksi (encoding), ja se varmistaa, että algoritmit pystyvät tulkitsemaan ja oppimaan datasta tehokkaasti.
One-hot-koodaus luo uuden binäärisen sarakkeen jokaiselle kategorisen muuttujan luokalle. Jokainen havainto saa arvon 1 sarakkeeseen, joka vastaa sen luokkaa, ja 0 muihin sarakkeisiin.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Label encoding antaa jokaiselle muuttujan yksilölliselle luokalle kokonaislukuarvon, muuntaen tekstimuotoiset luokat numeroiksi.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Order encoding antaa järjestetyt kokonaislukuarvot luokille niiden luonnollisen järjestyksen perusteella. Tämä menetelmä säilyttää järjestysluonteisten kategoristen muuttujien sisäisen järjestyksen, kuten koulutustasot ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Ole varovainen kategoristen muuttujien koodauksessa. One-hot-koodaus voi aiheuttaa dummy-muuttujaloukun – tilanteen, jossa piirteet ovat vahvasti korreloituneita, mikä voi hämmentää joitakin malleja. Tämän välttämiseksi voit jättää yhden dummy-sarakkeen pois. Label encoding eli nimikekoodaus asettaa järjestyssuhteen kategorioiden välille, mikä ei välttämättä sovi nimellisdatalle.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 8.33
Kategoristen Muuttujien Koodaus
Pyyhkäise näyttääksesi valikon
Kategoriset muuttujat ovat tietosi ominaisuuksia, jotka edustavat luokkia eivätkä numeerisia arvoja. Esimerkkejä ovat värit kuten "red", "green" ja "blue" tai tunnisteet kuten "yes" ja "no". Koneoppimisalgoritmit vaativat syötteenä numeerista dataa, joten nämä kategoriset muuttujat täytyy muuntaa numeeriseen muotoon ennen mallien käyttöä. Tätä prosessia kutsutaan koodaukseksi (encoding), ja se varmistaa, että algoritmit pystyvät tulkitsemaan ja oppimaan datasta tehokkaasti.
One-hot-koodaus luo uuden binäärisen sarakkeen jokaiselle kategorisen muuttujan luokalle. Jokainen havainto saa arvon 1 sarakkeeseen, joka vastaa sen luokkaa, ja 0 muihin sarakkeisiin.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Label encoding antaa jokaiselle muuttujan yksilölliselle luokalle kokonaislukuarvon, muuntaen tekstimuotoiset luokat numeroiksi.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Order encoding antaa järjestetyt kokonaislukuarvot luokille niiden luonnollisen järjestyksen perusteella. Tämä menetelmä säilyttää järjestysluonteisten kategoristen muuttujien sisäisen järjestyksen, kuten koulutustasot ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Ole varovainen kategoristen muuttujien koodauksessa. One-hot-koodaus voi aiheuttaa dummy-muuttujaloukun – tilanteen, jossa piirteet ovat vahvasti korreloituneita, mikä voi hämmentää joitakin malleja. Tämän välttämiseksi voit jättää yhden dummy-sarakkeen pois. Label encoding eli nimikekoodaus asettaa järjestyssuhteen kategorioiden välille, mikä ei välttämättä sovi nimellisdatalle.
Kiitos palautteestasi!