Pandat muuntaa kategorisista arvoista kansainvälisiä arvoja

Pandat Muuntaa Kategorisista Arvoista Kansainvalisia Arvoja



Koneoppimisen suorittamisen tietojoukot sisältävät sekä numeerisia että kategorisia muuttujia. Kategoriset muuttujat ovat merkkijonotyyppisiä tietoja, jotka ihmiset ymmärtävät helposti. Koneet sitä vastoin eivät voi ymmärtää kategorisia syötteitä suoraan. Tästä syystä kategorinen sisältö on muutettava numeerisiksi arvoiksi, joita koneet voivat tulkita.

Menetelmät kategorisen muuntamiseksi Int

'Pandoissa' käytettävissä olevat tekniikat DataFrame-kehyksen kategoriallisten arvojen muuntamiseen int-arvoiksi on esitetty tässä:

    • DataFrame.replace() -menetelmä
    • DataFrame.apply(factorize()) -menetelmä

Käytämme näitä menetelmiä tässä artikkelissa ja selitämme yksityiskohtaisesti kuinka käyttää molempia menetelmiä 'pandoissa'.







Esimerkki # 1: Pandas Replace() -menetelmän käyttäminen

DataFramen kategorialliset arvot voidaan muuntaa int-muotoon käyttämällä pandan 'DataFrame.replace()' -menetelmää. Täällä opimme käyttämään tätä menetelmää.



Käytimme 'Spyder' -työkalua tämän tekniikan optimaaliseen suorittamiseen Pythonissa. Aloita komentosarjan kirjoittaminen avaamalla uusi Python-tiedosto 'Spyder'-työkalussa. Merkittävin vaatimus skriptin kirjoittamiselle on asianmukaisten kirjastojen tuonti. Koska meidän on otettava käyttöön 'pandas' -menetelmä, meillä on 'tuo pandat pd:nä' käyttääksemme 'pandojen' ominaisuuksia. Sitten aloitamme Python-ydinkoodimme. Olemme luoneet DataFrame-kehyksen 'pd.DataFrame()'-menetelmällä. DataFrame alustetaan kolmella sarakkeella 'Name', 'Degree' ja 'Income'. Kaikki DataFramen sarakkeet tallentavat saman pituisia arvoja.



Ensimmäisessä sarakkeessa 'Nimi' on kahdeksan arvoa, jotka ovat 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' ja 'elsa'. Toinen sarake 'Degree' tallentaa myös kahdeksan kategorista arvoa, jotka ovat 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' ja 'MS'. Viimeisessä sarakkeessa 'Tuot' on kahdeksan kokonaislukuarvoa '60000', '80000', '75000', '45000', '56000', '65000', '55000' ja '70000'. Olemme luoneet DataFrame-objektin “staff” tallentamaan “pd.DataFrame()”-funktion kutsumisen tulosten. Alkuperäisen DataFrame-kehyksemme näyttämiseksi käytimme 'print()'-menetelmää, jonka parametrina oli DataFramen nimi 'staff' komentosarjan viimeisellä rivillä.






Nähdäksesi tulosteen päätteessä, käytä 'Suorita tiedosto' -painiketta 'Spyder' -työkalussa tai paina 'Shift+Enter' -näppäimiä. Päätteen näytössä näkyy DataFrame, jossa on kolme saraketta, jotka on luotu onnistuneesti.


Nyt DataFrame on rakennettu, meidän on sovellettava siihen vaadittua tekniikkaa. Pandan 'DataFrame.replace()' -menetelmää käytetään muuttamaan tietyn sarakkeen kategorialliset arvot kokonaislukuarvoiksi, jotta koneet voivat tehdä niistä luettavia.



Olemme antaneet DataFramen nimen sen sarakkeen nimen kanssa, jonka arvot meidän on korvattava, eli 'staff['degree']. Haluamme, että sarakkeen 'Degree' arvot, jossa on kategoriallisia arvoja, korvataan kokonaislukuarvoilla. Sitten '.replace()' -menetelmä vedetään. Olemme jakaneet sen kahteen ryhmään; ensimmäinen sisältää kaksi kategorista arvoa '['BS', 'MS']', jotka poimimme 'Degree'-sarakkeesta. Kuten näet, 'Degree'-sarake käyttää näitä kahta arvoa toistuvasti. Jos meillä oli kolmas arvo, meidän on täytynyt mainita myös se. Toisessa joukossa on kaksi int-arvoa '[0, 1]', jotka korvaavat vastaavasti ensimmäiset arvot. Toinen parametri, 'inplace', on asetettu arvoon 'True', mikä mahdollistaa arvojen korvaamisen. Jos asetuksena on 'False', se poistaa vaihtamisen käytöstä. Lopuksi olemme käyttäneet 'print()'-menetelmää näyttääksemme päivitetyn 'henkilökunnan' DataFramen.


Tuloksena olevalla DataFrame-kehyksellä on kokonaislukuarvoja Degree-sarakkeessa. Arvo 'BS' korvataan arvolla '0s' ja 'MS' korvataan '1s'.


Voit jopa tarkistaa kunkin sarakkeen tietotyypin käyttämällä ominaisuutta 'dataframe.dtype'. Tämä saa meille tietotyypit kaikista määritetyn DataFramen sarakkeista.


Täältä saimme DataFrame-tietotyypit. Näemme, että 'Degree' -sarakkeen tietotyyppi on muuttunut 'int64'.

Esimerkki # 2: Pandas apply() -menetelmän käyttäminen

Toinen pandan meille tarjoama menetelmä on 'DataFrame.apply()' -funktio kategoristen arvojen muuttamiseksi kokonaisluvuiksi. Edellisessä esimerkissä olemme oppineet muuttamaan yhden kategorisen sarakkeen kokonaisluvuksi. Katsomme nyt, kuinka kaikki DataFramen kategoriset sarakkeet muunnetaan int.

Käytännön toteutuksesta alkaen meidän on tuotava tämän menetelmän olennainen kirjasto, joka on pandat. Olemme käyttäneet komentosarjaa 'import pandas as pd' tuodaksemme pandat Python-tiedostoomme 'Spyder' -työkalussa, jonka avulla voimme käyttää pandamoduuleja 'pd':n avulla. Käytimme 'pd.DataFrame()'-funktiota DataFramen rakentamiseen.

Tässä DataFramessa on neljä saraketta 'ryhmä', 'sijainti', 'pisteet' ja 'avustukset'. Jokainen sarake tallentaa 9 arvoa. Ryhmä-sarakkeen arvot ovat 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' ja 'Y'. 'Sijainti'-sarakkeessa on 9 arvoa, jotka ovat 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' ja 'B'. 'Scores' -sarakkeessa on kokonaislukuarvot '4', '8', '7', '10', '9', '5', '7', '3' ja '23'. Viimeisessä sarakkeessa 'avustetaan' on arvot '10', '2', '3', '9', '3', '7', '4', '2' ja '9'.

Olemme luoneet DataFrame-objektin 'prog' ja määrittäneet sille 'pd.DataFrame()'-menetelmän kutsumisen. Joten tuloksena oleva DataFrame-kehys, joka on luotu 'pd.DataFrame()' -tiedostosta, tallennetaan 'prog'. Nyt voimme käyttää DataFramea käyttämällä tätä objektia. Tämän DataFramen tarkastelemiseksi olemme käyttäneet 'print()'-menetelmää DataFrame-objektin 'prog' parametrina.


Kun edellinen Python-ohjelma suoritetaan, päätteessä näkyy neljän sarakkeen DataFrame.


Useiden kategoristen sarakkeiden muuntamiseksi kokonaisluvuiksi olemme noudattaneet tätä tekniikkaa. Ensin meidän on valittava kaikki objektitietotyypin sisältävät sarakkeet käyttämällä pandan 'DataFrame.select_dtypes().columns' -menetelmää. Kun käytämme sitä komentosarjassamme tarpeen mukaan, se on 'prog.select_dtypes(['object']).columns'. Se valitsee kaikki sarakkeet, joiden tietotyyppi on 'object' 'prog' DataFrame -kehyksestä. Olemme luoneet muuttujan 'concate_col' tallentamaan tämän menetelmän tulosteen. Voimme nyt käyttää 'object'-tietotyyppisarakkeita yksinkertaisesti käyttämällä tätä muuttujaa 'concat_col'.

Nyt näiden sarakkeiden muuntamiseksi kokonaisluvuiksi olemme käyttäneet pandaa 'DataFrame.apply()' 'pd.factorize()'-menetelmän kanssa. Olemme käyttäneet 'concat_col'-muuttujaa DataFrame-nimellä, jolloin '.apply()'-metodi kutsutaan. '.apply'-menetelmän sulkeiden välissä olemme kutsuneet 'pd.factorize()'-menetelmää, jossa 'x' voi olla mikä tahansa 'prog' DataFrame -tietokehyksen arvo 'object'-tietotyypin kanssa. Siten koko tämä koodirivi kirjoitetaan seuraavasti: 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. 'objekti'-tietotyyppi ja muuntaa se 'int'. Lopullinen tulos voidaan näyttää kutsumalla 'print()'-funktiota välittämällä 'prog'-muuttuja sen parametriksi.


Päivitetyssä DataFrame-kehyksessä voimme havaita, että 'ryhmä'- ja 'sijainti'-sarakkeiden arvot olivat alun perin kategorisia, eli objektia. Päivitetyssä DataFrame-tulosteen molemmissa sarakkeissa on kokonaislukuarvot. Ryhmä-sarakkeessa 'X' korvataan '0':lla ja 'Y' '1':llä. Kun taas 'sijainti' -sarake 'A' korvataan '0', 'C' '1', 'D' '2' ja 'B' '3'.


Nyt tarkistetaan päivitetyt tietotyypit.


Kaikkien seuraavien sarakkeiden tietotyyppi on 'int64'.

Johtopäätös

Oppaamme käsittelee kategoristen arvojen muuntamista numeerisiksi arvoiksi, jotta koneet voivat tehdä niistä ymmärrettäviä, koska ne eivät pysty käsittelemään objektitietotyyppiä. Olemme esitelleet sinulle kaksi 'pandas' -kirjaston tarjoamaa lähestymistapaa vaaditun tietotyypin saamiseksi. Myös 'Spyder'-työkalulla suoritettujen esimerkkikoodien käytännön toteutuksen yhteydessä jaoimme kunkin esimerkin tulokset. Lopuksi mietimme jokaista vaihetta halutun tuloksen saavuttamiseksi.