You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/sl/2-Regression/2-Data
leestott c796f3dda8
🌐 Update translations via Co-op Translator
2 weeks ago
..
solution 🌐 Update translations via Co-op Translator 2 weeks ago
README.md 🌐 Update translations via Co-op Translator 3 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago
notebook.ipynb 🌐 Update translations via Co-op Translator 2 weeks ago

README.md

Ustvarjanje regresijskega modela s Scikit-learn: priprava in vizualizacija podatkov

Infografika vizualizacije podatkov

Infografika avtorja Dasani Madipalli

Predavanje kviz

To lekcijo lahko najdete tudi v jeziku R!

Uvod

Zdaj, ko imate na voljo orodja za gradnjo modelov strojnega učenja s Scikit-learn, ste pripravljeni začeti postavljati vprašanja svojim podatkom. Pri delu s podatki in uporabi rešitev strojnega učenja je zelo pomembno, da znate postaviti prava vprašanja, da lahko pravilno izkoristite potenciale svojega nabora podatkov.

V tej lekciji boste spoznali:

  • Kako pripraviti podatke za gradnjo modela.
  • Kako uporabiti Matplotlib za vizualizacijo podatkov.

Postavljanje pravih vprašanj svojim podatkom

Vprašanje, na katerega želite odgovor, bo določilo, katere vrste algoritmov strojnega učenja boste uporabili. Kakovost odgovora pa bo močno odvisna od narave vaših podatkov.

Oglejte si podatke, ki so na voljo za to lekcijo. Datoteko .csv lahko odprete v programu VS Code. Hiter pregled takoj pokaže, da so prisotne prazne vrednosti ter mešanica nizov in številskih podatkov. Obstaja tudi nenavaden stolpec z imenom 'Package', kjer so podatki mešanica 'sacks', 'bins' in drugih vrednosti. Podatki so pravzaprav precej neurejeni.

ML za začetnike - Kako analizirati in očistiti nabor podatkov

🎥 Kliknite zgornjo sliko za kratek video o pripravi podatkov za to lekcijo.

Pravzaprav ni pogosto, da dobite nabor podatkov, ki je popolnoma pripravljen za ustvarjanje modela strojnega učenja. V tej lekciji se boste naučili, kako pripraviti surove podatke z uporabo standardnih knjižnic za Python. Spoznali boste tudi različne tehnike za vizualizacijo podatkov.

Študija primera: 'trg buč'

V tej mapi boste našli datoteko .csv v korenski mapi data, imenovano US-pumpkins.csv, ki vključuje 1757 vrstic podatkov o trgu buč, razvrščenih po mestih. To so surovi podatki, pridobljeni iz Specialty Crops Terminal Markets Standard Reports, ki jih distribuira Ministrstvo za kmetijstvo ZDA.

Priprava podatkov

Ti podatki so v javni domeni. Na spletni strani USDA jih je mogoče prenesti v številnih ločenih datotekah, po mestih. Da bi se izognili prevelikemu številu ločenih datotek, smo združili vse podatke mest v eno preglednico, kar pomeni, da smo podatke že nekoliko pripravili. Zdaj si podrobneje oglejmo podatke.

Podatki o bučah - prvi vtisi

Kaj opazite pri teh podatkih? Že prej ste videli, da gre za mešanico nizov, števil, praznih vrednosti in nenavadnih vrednosti, ki jih morate razumeti.

Katero vprašanje lahko postavite tem podatkom z uporabo regresijske tehnike? Kaj pa "Napovedovanje cene buče za prodajo v določenem mesecu"? Če ponovno pogledate podatke, boste opazili, da morate narediti nekaj sprememb, da ustvarite strukturo podatkov, potrebno za to nalogo.

Vaja - analiza podatkov o bučah

Uporabimo Pandas (ime pomeni Python Data Analysis), zelo uporabno orodje za oblikovanje podatkov, za analizo in pripravo teh podatkov o bučah.

Najprej preverite manjkajoče datume

Najprej boste morali preveriti, ali manjkajo datumi:

  1. Pretvorite datume v mesečni format (to so datumi iz ZDA, zato je format MM/DD/YYYY).
  2. Izluščite mesec v nov stolpec.

Odprite datoteko notebook.ipynb v Visual Studio Code in uvozite preglednico v nov Pandas dataframe.

  1. Uporabite funkcijo head(), da si ogledate prvih pet vrstic.

    import pandas as pd
    pumpkins = pd.read_csv('../data/US-pumpkins.csv')
    pumpkins.head()
    

    Katero funkcijo bi uporabili za ogled zadnjih petih vrstic?

  2. Preverite, ali v trenutnem dataframeu manjkajo podatki:

    pumpkins.isnull().sum()
    

    Manjkajo podatki, vendar morda to ne bo pomembno za nalogo.

  3. Da bo vaš dataframe lažji za delo, izberite samo stolpce, ki jih potrebujete, z uporabo funkcije loc, ki iz izvirnega dataframea izlušči skupino vrstic (podanih kot prvi parameter) in stolpcev (podanih kot drugi parameter). Izraz : v spodnjem primeru pomeni "vse vrstice".

    columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
    pumpkins = pumpkins.loc[:, columns_to_select]
    

Drugič, določite povprečno ceno buče

Razmislite, kako določiti povprečno ceno buče v določenem mesecu. Katere stolpce bi izbrali za to nalogo? Namig: potrebovali boste 3 stolpce.

Rešitev: vzemite povprečje stolpcev Low Price in High Price, da napolnite nov stolpec Price, in pretvorite stolpec Date, da prikaže samo mesec. Na srečo, glede na zgornjo preverbo, ni manjkajočih podatkov za datume ali cene.

  1. Za izračun povprečja dodajte naslednjo kodo:

    price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
    
    month = pd.DatetimeIndex(pumpkins['Date']).month
    
    

    Po želji natisnite katerikoli podatek, ki ga želite preveriti, z uporabo print(month).

  2. Zdaj kopirajte pretvorjene podatke v nov Pandas dataframe:

    new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
    

    Če natisnete svoj dataframe, boste videli čist, urejen nabor podatkov, na katerem lahko gradite svoj novi regresijski model.

Ampak počakajte! Nekaj je čudnega

Če pogledate stolpec Package, so buče prodane v različnih konfiguracijah. Nekatere so prodane v '1 1/9 bushel' enotah, nekatere v '1/2 bushel' enotah, nekatere na bučo, nekatere na funt, in nekatere v velikih škatlah različnih širin.

Zdi se, da je buče zelo težko dosledno tehtati

Če se poglobite v izvirne podatke, je zanimivo, da imajo vse enote z Unit of Sale enako 'EACH' ali 'PER BIN' tudi vrsto Package na palec, na bin ali 'each'. Zdi se, da je buče zelo težko dosledno tehtati, zato jih filtrirajmo tako, da izberemo samo buče z nizom 'bushel' v njihovem stolpcu Package.

  1. Dodajte filter na vrhu datoteke, pod začetnim uvozom .csv:

    pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
    

    Če zdaj natisnete podatke, lahko vidite, da dobite le približno 415 vrstic podatkov, ki vsebujejo buče po buslju.

Ampak počakajte! Še nekaj je treba narediti

Ste opazili, da se količina buslja razlikuje po vrsticah? Potrebno je normalizirati cene, da prikažete cene na buselj, zato naredite nekaj izračunov za standardizacijo.

  1. Dodajte te vrstice po bloku, ki ustvarja dataframe new_pumpkins:

    new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
    
    new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
    

Po podatkih The Spruce Eats teža buslja variira glede na vrsto pridelka, saj gre za meritev prostornine. "Buselj paradižnikov, na primer, naj bi tehtal 56 funtov... Listi in zelenjava zavzamejo več prostora z manjšo težo, zato buselj špinače tehta le 20 funtov." Vse skupaj je precej zapleteno! Ne ukvarjajmo se s pretvorbo buslja v funte, ampak raje določimo ceno na buselj. Vse to proučevanje busljev buč pa kaže, kako zelo pomembno je razumeti naravo svojih podatkov!

Zdaj lahko analizirate cene na enoto glede na njihovo meritev buslja. Če še enkrat natisnete podatke, lahko vidite, kako so standardizirani.

Ste opazili, da so buče, prodane po pol buslja, zelo drage? Ali lahko ugotovite, zakaj? Namig: majhne buče so veliko dražje od velikih, verjetno zato, ker jih je veliko več na buselj, glede na neizkoriščen prostor, ki ga zavzame ena velika votla buča za pito.

Strategije vizualizacije

Del naloge podatkovnega znanstvenika je prikazati kakovost in naravo podatkov, s katerimi dela. To pogosto dosežejo z ustvarjanjem zanimivih vizualizacij, kot so grafi, diagrami in tabele, ki prikazujejo različne vidike podatkov. Na ta način lahko vizualno prikažejo odnose in vrzeli, ki jih je sicer težko odkriti.

ML za začetnike - Kako vizualizirati podatke z Matplotlib

🎥 Kliknite zgornjo sliko za kratek video o vizualizaciji podatkov za to lekcijo.

Vizualizacije lahko pomagajo tudi pri določanju tehnike strojnega učenja, ki je najbolj primerna za podatke. Na primer, raztrosni diagram, ki sledi liniji, kaže, da so podatki primerni za nalogo linearne regresije.

Ena od knjižnic za vizualizacijo podatkov, ki dobro deluje v Jupyterjevih beležnicah, je Matplotlib (ki ste jo videli tudi v prejšnji lekciji).

Pridobite več izkušenj z vizualizacijo podatkov v teh vadnicah.

Vaja - eksperimentiranje z Matplotlib

Poskusite ustvariti osnovne grafe za prikaz novega dataframea, ki ste ga pravkar ustvarili. Kaj bi pokazal osnovni linijski graf?

  1. Uvozite Matplotlib na vrhu datoteke, pod uvozom Pandas:

    import matplotlib.pyplot as plt
    
  2. Ponovno zaženite celotno beležnico za osvežitev.

  3. Na dnu beležnice dodajte celico za prikaz podatkov kot škatlasti graf:

    price = new_pumpkins.Price
    month = new_pumpkins.Month
    plt.scatter(price, month)
    plt.show()
    

    Raztrosni diagram, ki prikazuje razmerje med ceno in mesecem

    Ali je ta graf uporaben? Vas kaj na njem preseneča?

    Ni posebej uporaben, saj le prikazuje razpršenost točk v določenem mesecu.

Naredimo ga uporabnega

Da bi grafi prikazovali uporabne podatke, jih običajno morate nekako združiti. Poskusimo ustvariti graf, kjer y-os prikazuje mesece, podatki pa prikazujejo porazdelitev podatkov.

  1. Dodajte celico za ustvarjanje združenega stolpčnega diagrama:

    new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
    plt.ylabel("Pumpkin Price")
    

    Stolpčni diagram, ki prikazuje razmerje med ceno in mesecem

    To je bolj uporabna vizualizacija podatkov! Zdi se, da kaže, da so najvišje cene buč v septembru in oktobru. Ali to ustreza vašim pričakovanjem? Zakaj ali zakaj ne?


🚀Izziv

Raziščite različne vrste vizualizacij, ki jih ponuja Matplotlib. Katere vrste so najbolj primerne za regresijske probleme?

Kviz po predavanju

Pregled in samostojno učenje

Oglejte si različne načine vizualizacije podatkov. Naredite seznam različnih knjižnic, ki so na voljo, in zabeležite, katere so najboljše za določene vrste nalog, na primer 2D vizualizacije v primerjavi s 3D vizualizacijami. Kaj odkrijete?

Naloga

Raziskovanje vizualizacije


Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za strojno prevajanje Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.