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/lt/2-Regression/2-Data/README.md

13 KiB

Sukurkite regresijos modelį naudodami Scikit-learn: paruoškite ir vizualizuokite duomenis

Duomenų vizualizacijos infografika

Infografiką sukūrė Dasani Madipalli

Prieš paskaitos testas

Ši pamoka pasiekiama R kalba!

Įvadas

Dabar, kai turite visus įrankius, reikalingus pradėti kurti mašininio mokymosi modelius su Scikit-learn, esate pasiruošę pradėti užduoti klausimus savo duomenims. Dirbant su duomenimis ir taikant ML sprendimus, labai svarbu mokėti užduoti tinkamus klausimus, kad galėtumėte maksimaliai išnaudoti savo duomenų potencialą.

Šioje pamokoje sužinosite:

  • Kaip paruošti duomenis modelio kūrimui.
  • Kaip naudoti Matplotlib duomenų vizualizacijai.

Tinkamų klausimų uždavimas savo duomenims

Klausimas, į kurį norite gauti atsakymą, nulems, kokio tipo ML algoritmus naudosite. Atsakymo kokybė labai priklausys nuo jūsų duomenų pobūdžio.

Pažvelkite į duomenis, pateiktus šiai pamokai. Šį .csv failą galite atidaryti VS Code. Greitai peržvelgus matyti, kad yra tuščių langelių, mišrių tekstinių ir skaitinių duomenų. Taip pat yra keista stulpelis „Package“, kuriame duomenys yra maišyti tarp „sacks“, „bins“ ir kitų reikšmių. Duomenys, tiesą sakant, yra gana netvarkingi.

ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį

🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų paruošimą šiai pamokai.

Iš tiesų, retai pasitaiko, kad duomenų rinkinys būtų visiškai paruoštas ML modelio kūrimui iš karto. Šioje pamokoje sužinosite, kaip paruošti neapdorotą duomenų rinkinį naudojant standartines Python bibliotekas. Taip pat išmoksite įvairių duomenų vizualizavimo technikų.

Atvejo analizė: „moliūgų rinka“

Šiame aplanke rasite .csv failą šakniniame data aplanke, pavadintą US-pumpkins.csv, kuriame yra 1757 eilutės duomenų apie moliūgų rinką, suskirstytų pagal miestus. Tai yra neapdoroti duomenys, gauti iš Specialty Crops Terminal Markets Standard Reports, kuriuos platina Jungtinių Valstijų Žemės ūkio departamentas.

Duomenų paruošimas

Šie duomenys yra viešojoje erdvėje. Juos galima atsisiųsti iš USDA svetainės atskirais failais pagal miestus. Kad išvengtume per daug atskirų failų, sujungėme visus miestų duomenis į vieną skaičiuoklę, taigi jau šiek tiek paruošėme duomenis. Dabar pažvelkime į duomenis atidžiau.

Moliūgų duomenys - pirminės išvados

Ką pastebite apie šiuos duomenis? Jau matėte, kad yra mišrių tekstinių, skaitinių, tuščių ir keistų reikšmių, kurias reikia suprasti.

Kokį klausimą galite užduoti šiems duomenims, naudodami regresijos techniką? Pavyzdžiui: „Prognozuoti moliūgo kainą pardavimui tam tikrą mėnesį“. Pažvelgus į duomenis dar kartą, reikia atlikti tam tikrus pakeitimus, kad sukurtumėte tinkamą duomenų struktūrą šiai užduočiai.

Užduotis - analizuoti moliūgų duomenis

Naudokime Pandas (pavadinimas reiškia Python Data Analysis), labai naudingą įrankį duomenų formavimui, kad analizuotume ir paruoštume šiuos moliūgų duomenis.

Pirma, patikrinkite, ar nėra trūkstamų datų

Pirmiausia turėsite patikrinti, ar nėra trūkstamų datų:

  1. Konvertuokite datas į mėnesio formatą (tai yra JAV datos, todėl formatas yra MM/DD/YYYY).
  2. Ištraukite mėnesį į naują stulpelį.

Atidarykite notebook.ipynb failą Visual Studio Code ir importuokite skaičiuoklę į naują Pandas dataframe.

  1. Naudokite head() funkciją, kad peržiūrėtumėte pirmas penkias eilutes.

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

    Kokią funkciją naudotumėte, kad peržiūrėtumėte paskutines penkias eilutes?

  2. Patikrinkite, ar dabartiniame dataframe yra trūkstamų duomenų:

    pumpkins.isnull().sum()
    

    Yra trūkstamų duomenų, tačiau galbūt tai nesvarbu šiai užduočiai.

  3. Kad jūsų dataframe būtų lengviau dirbti, pasirinkite tik reikalingus stulpelius, naudodami loc funkciją, kuri iš originalaus dataframe ištraukia eilutes (pateiktas kaip pirmas parametras) ir stulpelius (pateiktus kaip antras parametras). Ženklas : žemiau reiškia „visos eilutės“.

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

Antra, nustatykite vidutinę moliūgo kainą

Pagalvokite, kaip nustatyti vidutinę moliūgo kainą tam tikrą mėnesį. Kokius stulpelius pasirinktumėte šiai užduočiai? Užuomina: jums reikės 3 stulpelių.

Sprendimas: paimkite vidurkį iš Low Price ir High Price stulpelių, kad užpildytumėte naują Price stulpelį, ir konvertuokite Date stulpelį, kad būtų rodomas tik mėnuo. Laimei, pagal aukščiau atliktą patikrinimą, nėra trūkstamų duomenų datoms ar kainoms.

  1. Norėdami apskaičiuoti vidurkį, pridėkite šį kodą:

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

    Galite laisvai spausdinti bet kokius duomenis, kuriuos norite patikrinti, naudodami print(month).

  2. Dabar nukopijuokite konvertuotus duomenis į naują Pandas dataframe:

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

    Spausdindami savo dataframe pamatysite švarią, tvarkingą duomenų rinkinį, kuriame galėsite kurti naują regresijos modelį.

Bet palaukite! Čia kažkas keisto

Jei pažvelgsite į Package stulpelį, moliūgai parduodami įvairiomis konfigūracijomis. Kai kurie parduodami „1 1/9 bushel“ matavimo vienetais, kai kurie „1/2 bushel“ matavimo vienetais, kai kurie pagal moliūgą, kai kurie pagal svorį, o kai kurie didelėse dėžėse su skirtingais pločiais.

Moliūgus atrodo labai sunku sverti nuosekliai

Gilindamiesi į originalius duomenis, pastebėsite, kad viskas, kas turi Unit of Sale reikšmę „EACH“ arba „PER BIN“, taip pat turi Package tipą pagal colį, biną arba „each“. Moliūgus atrodo labai sunku sverti nuosekliai, todėl filtruokime juos, pasirinkdami tik tuos moliūgus, kurių Package stulpelyje yra žodis „bushel“.

  1. Pridėkite filtrą failo viršuje, po pradinio .csv importo:

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

    Jei dabar spausdinsite duomenis, pamatysite, kad gaunate tik apie 415 eilučių duomenų, kuriuose moliūgai pateikiami pagal bushel.

Bet palaukite! Dar vienas dalykas, kurį reikia padaryti

Ar pastebėjote, kad bushel kiekis skiriasi kiekvienoje eilutėje? Jums reikia normalizuoti kainas, kad būtų rodomos kainos pagal bushel, todėl atlikite keletą skaičiavimų, kad standartizuotumėte.

  1. Pridėkite šias eilutes po bloko, kuris sukuria new_pumpkins dataframe:

    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)
    

Pasak The Spruce Eats, bushel svoris priklauso nuo produkto tipo, nes tai yra tūrio matavimo vienetas. „Pavyzdžiui, pomidorų bushel turėtų sverti 56 svarus... Lapai ir žalumynai užima daugiau vietos su mažesniu svoriu, todėl špinatų bushel yra tik 20 svarų.“ Tai gana sudėtinga! Nesivarginkime su bushel į svarus konversija, o vietoj to kainą skaičiuokime pagal bushel. Visa ši moliūgų bushel analizė, tačiau, parodo, kaip svarbu suprasti savo duomenų pobūdį!

Dabar galite analizuoti kainas pagal vienetą, remdamiesi jų bushel matavimu. Jei dar kartą spausdinsite duomenis, pamatysite, kaip jie yra standartizuoti.

Ar pastebėjote, kad moliūgai, parduodami pagal pusę bushel, yra labai brangūs? Ar galite suprasti, kodėl? Užuomina: maži moliūgai yra daug brangesni nei dideli, tikriausiai todėl, kad jų yra daug daugiau viename bushel, atsižvelgiant į nepanaudotą vietą, kurią užima vienas didelis tuščiaviduris pyrago moliūgas.

Vizualizacijos strategijos

Duomenų mokslininko vaidmuo yra parodyti duomenų kokybę ir pobūdį, su kuriais jis dirba. Tam jie dažnai kuria įdomias vizualizacijas, tokias kaip sklaidos diagramos, grafikai ir lentelės, kurios parodo skirtingus duomenų aspektus. Tokiu būdu jie gali vizualiai parodyti ryšius ir spragas, kurių kitaip būtų sunku pastebėti.

ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib

🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų vizualizaciją šiai pamokai.

Vizualizacijos taip pat gali padėti nustatyti, kuris mašininio mokymosi metodas yra tinkamiausias duomenims. Pavyzdžiui, sklaidos diagrama, kuri atrodo kaip linija, rodo, kad duomenys yra tinkami linijinės regresijos užduočiai.

Viena duomenų vizualizacijos biblioteka, kuri gerai veikia Jupyter užrašuose, yra Matplotlib (ją taip pat matėte ankstesnėje pamokoje).

Gaukite daugiau patirties su duomenų vizualizacija šiame vadove.

Užduotis - eksperimentuokite su Matplotlib

Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dataframe, kurį ką tik sukūrėte. Ką parodytų pagrindinė linijinė diagrama?

  1. Importuokite Matplotlib failo viršuje, po Pandas importo:

    import matplotlib.pyplot as plt
    
  2. Paleiskite visą užrašų knygelę iš naujo, kad atnaujintumėte.

  3. Užrašų knygelės apačioje pridėkite langelį, kad duomenys būtų pateikti kaip dėžutė:

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

    Sklaidos diagrama, rodanti kainos ir mėnesio ryšį

    Ar tai naudinga diagrama? Ar kas nors joje jus nustebina?

    Ji nėra ypač naudinga, nes tiesiog rodo jūsų duomenis kaip taškų sklaidą tam tikrame mėnesyje.

Padarykite ją naudingą

Kad diagramos rodytų naudingus duomenis, paprastai reikia kažkaip grupuoti duomenis. Pabandykime sukurti diagramą, kur y ašis rodo mėnesius, o duomenys demonstruoja duomenų pasiskirstymą.

  1. Pridėkite langelį, kad sukurtumėte grupuotą stulpelinę diagramą:

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

    Stulpelinė diagrama, rodanti kainos ir mėnesio ryšį

    Tai yra naudingesnė duomenų vizualizacija! Atrodo, kad didžiausia moliūgų kaina yra rugsėjį ir spalį. Ar tai atitinka jūsų lūkesčius? Kodėl arba kodėl ne?


🚀Iššūkis

Ištyrinėkite skirtingus vizualizacijos tipus, kuriuos siūlo Matplotlib. Kurie tipai yra tinkamiausi regresijos problemoms?

Po paskaitos testas

Apžvalga ir savarankiškas mokymasis

Pažvelkite į daugybę būdų vizualizuoti duomenis. Sudarykite sąrašą įvairių bibliotekų ir pažymėkite, kurios yra geriausios tam tikriems užduočių tipams, pavyzdžiui, 2D vizualizacijoms ir 3D vizualizacijoms. Ką atrandate?

Užduotis

Duomenų vizualizacijos tyrinėjimas


Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, atkreipiame dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudotis profesionalių vertėjų paslaugomis. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.