|
|
3 weeks ago | |
|---|---|---|
| .. | ||
| solution | 3 weeks ago | |
| README.md | 3 weeks ago | |
| assignment.md | 4 months ago | |
| notebook.ipynb | 4 months ago | |
README.md
Ehita regressioonimudel Scikit-learniga: andmete ettevalmistamine ja visualiseerimine
Infograafika autor: Dasani Madipalli
Eelloengu viktoriin
See õppetund on saadaval ka R-is!
Sissejuhatus
Nüüd, kui sul on olemas tööriistad, et alustada masinõppe mudelite loomist Scikit-learniga, oled valmis hakkama oma andmetele küsimusi esitama. Andmetega töötades ja ML-lahendusi rakendades on väga oluline osata esitada õigeid küsimusi, et avada oma andmekogumi potentsiaal.
Selles õppetunnis õpid:
- Kuidas valmistada andmeid mudeli loomiseks.
- Kuidas kasutada Matplotlibi andmete visualiseerimiseks.
Õige küsimuse esitamine oma andmetele
Küsimus, millele vastust otsid, määrab, millist tüüpi ML-algoritme sa kasutad. Vastuse kvaliteet sõltub suuresti sinu andmete olemusest.
Vaata andmeid, mis on selle õppetunni jaoks ette nähtud. Sa saad avada selle .csv-faili VS Code'is. Kiire pilk näitab kohe, et seal on tühje kohti ja segu stringidest ning numbrilistest andmetest. Seal on ka kummaline veerg nimega 'Package', kus andmed on segu 'sacks', 'bins' ja muudest väärtustest. Tegelikult on andmed üsna segased.
🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot, mis käsitleb andmete ettevalmistamist selle õppetunni jaoks.
Tegelikult ei ole väga tavaline, et sulle antakse andmekogum, mis on täiesti valmis ML-mudeli loomiseks. Selles õppetunnis õpid, kuidas valmistada ette toorandmeid, kasutades standardseid Python'i teeke. Samuti õpid erinevaid tehnikaid andmete visualiseerimiseks.
Juhtumiuuring: 'kõrvitsaturg'
Selles kaustas leiad .csv-faili juurkaustas data, nimega US-pumpkins.csv, mis sisaldab 1757 rida andmeid kõrvitsaturu kohta, rühmitatuna linnade kaupa. Need on toorandmed, mis on saadud Specialty Crops Terminal Markets Standard Reports kaudu, mida levitab Ameerika Ühendriikide Põllumajandusministeerium.
Andmete ettevalmistamine
Need andmed on avalikus domeenis. Neid saab alla laadida paljudes eraldi failides, iga linna kohta, USDA veebisaidilt. Et vältida liiga paljusid eraldi faile, oleme kõik linnade andmed üheks tabeliks kokku liitnud, seega oleme andmeid juba veidi ette valmistanud. Järgmine samm on andmetele lähemalt pilk heita.
Kõrvitsaandmed - esialgsed järeldused
Mida sa nende andmete kohta märkad? Sa juba nägid, et seal on segu stringidest, numbritest, tühjadest kohtadest ja kummalistest väärtustest, mida tuleb mõista.
Millist küsimust sa võiksid nendele andmetele esitada, kasutades regressioonitehnikat? Näiteks: "Prognoosi kõrvitsa müügihinda teatud kuu jooksul." Vaadates andmeid uuesti, on vaja teha mõned muudatused, et luua ülesande jaoks vajalik andmestruktuur.
Harjutus - analüüsi kõrvitsaandmeid
Kasutame Pandas (nimi tähistab Python Data Analysis), mis on väga kasulik tööriist andmete kujundamiseks, et analüüsida ja ette valmistada kõrvitsaandmeid.
Esmalt kontrolli puuduvate kuupäevade olemasolu
Esmalt tuleb astuda samme, et kontrollida puuduvate kuupäevade olemasolu:
- Konverteeri kuupäevad kuu formaati (need on USA kuupäevad, seega formaat on
MM/DD/YYYY). - Ekstraheeri kuu uude veergu.
Ava notebook.ipynb fail Visual Studio Code'is ja impordi tabel uude Pandase andmeraami.
-
Kasuta
head()funktsiooni, et vaadata esimesi viit rida.import pandas as pd pumpkins = pd.read_csv('../data/US-pumpkins.csv') pumpkins.head()✅ Millist funktsiooni kasutaksid viimase viie rea vaatamiseks?
-
Kontrolli, kas praeguses andmeraamis on puuduvad andmed:
pumpkins.isnull().sum()Seal on puuduvad andmed, kuid võib-olla see ei ole ülesande jaoks oluline.
-
Et muuta oma andmeraamiga töötamine lihtsamaks, vali ainult vajalikud veerud, kasutades
locfunktsiooni, mis ekstraheerib algsest andmeraamist ridade (esimene parameeter) ja veergude (teine parameeter) grupi. Allpool olev väljend:tähendab "kõik read".columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select]
Teiseks, määrake kõrvitsa keskmine hind
Mõtle, kuidas määrata kõrvitsa keskmine hind teatud kuus. Milliseid veerge sa selleks ülesandeks valiksid? Vihje: sul on vaja 3 veergu.
Lahendus: arvuta Low Price ja High Price veergude keskmine, et täita uus Price veerg, ja konverteeri Date veerg, et näidata ainult kuud. Õnneks, vastavalt ülaltoodud kontrollile, ei ole kuupäevade või hindade osas puuduvat teavet.
-
Keskmise arvutamiseks lisa järgmine kood:
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 month = pd.DatetimeIndex(pumpkins['Date']).month✅ Võid vabalt printida mis tahes andmeid, mida soovid kontrollida, kasutades
print(month). -
Nüüd kopeeri konverteeritud andmed uude Pandase andmeraami:
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})Kui prindid oma andmeraami välja, näed puhast ja korrastatud andmekogumit, mille põhjal saad ehitada uue regressioonimudeli.
Aga oota! Siin on midagi kummalist
Kui vaatad Package veergu, müüakse kõrvitsaid mitmes erinevas konfiguratsioonis. Mõned müüakse '1 1/9 bushel' mõõtühikutes, mõned '1/2 bushel' mõõtühikutes, mõned kõrvitsa kaupa, mõned naela kaupa ja mõned suurtes kastides, mille laius varieerub.
Kõrvitsaid tundub olevat väga raske ühtlaselt kaaluda
Originaalandmetesse süvenedes on huvitav, et kõik, mille Unit of Sale on 'EACH' või 'PER BIN', omavad ka Package tüüpi tolli, bin'i või 'each' kaupa. Kõrvitsaid tundub olevat väga raske ühtlaselt kaaluda, seega filtreerime need, valides ainult kõrvitsad, mille Package veerus on string 'bushel'.
-
Lisa filter faili algusesse, .csv importimise alla:
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]Kui prindid andmed nüüd välja, näed, et saad ainult umbes 415 rida andmeid, mis sisaldavad kõrvitsaid bushel'i kaupa.
Aga oota! Veel üks asi, mida teha
Kas märkasid, et bushel'i kogus varieerub ridade kaupa? Pead hindade normaliseerimiseks tegema matemaatilisi arvutusi, et näidata hinda bushel'i kohta.
-
Lisa need read pärast plokki, mis loob new_pumpkins andmeraami:
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)
✅ Vastavalt The Spruce Eats, bushel'i kaal sõltub toodangu tüübist, kuna see on mahu mõõtühik. "Näiteks tomatite bushel peaks kaaluma 56 naela... Lehed ja rohelised võtavad rohkem ruumi vähem kaaluga, seega spinati bushel on ainult 20 naela." See kõik on üsna keeruline! Ärgem vaevugem bushel'i-naela konversiooni tegemisega ja hinnastagem bushel'i kaupa. Kõik see kõrvitsate bushel'ite uurimine näitab aga, kui oluline on mõista oma andmete olemust!
Nüüd saad analüüsida hinnaühikut nende bushel'i mõõtühiku alusel. Kui prindid andmed veel kord välja, näed, kuidas need on standardiseeritud.
✅ Kas märkasid, et kõrvitsad, mida müüakse pool-bushel'i kaupa, on väga kallid? Kas oskad välja selgitada, miks? Vihje: väikesed kõrvitsad on palju kallimad kui suured, tõenäoliselt seetõttu, et neid on bushel'is palju rohkem, arvestades ühe suure õõnsa pirukakõrvitsa poolt hõivatud kasutamata ruumi.
Visualiseerimisstrateegiad
Andmeteadlase roll on näidata andmete kvaliteeti ja olemust, millega ta töötab. Selleks luuakse sageli huvitavaid visualiseeringuid, nagu graafikud, diagrammid ja joonised, mis näitavad andmete erinevaid aspekte. Nii on võimalik visuaalselt näidata seoseid ja lünki, mida muidu oleks raske avastada.
🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot, mis käsitleb andmete visualiseerimist selle õppetunni jaoks.
Visualiseeringud aitavad ka määrata, milline masinõppe tehnika on andmete jaoks kõige sobivam. Näiteks hajuvusdiagramm, mis näib järgivat joont, viitab sellele, et andmed sobivad hästi lineaarse regressiooni harjutuseks.
Üks andmete visualiseerimise teek, mis töötab hästi Jupyter'i märkmikes, on Matplotlib (mida nägid ka eelmises õppetunnis).
Saa rohkem kogemusi andmete visualiseerimisega nendes juhendites.
Harjutus - katseta Matplotlibiga
Proovi luua mõned põhilised graafikud, et kuvada just loodud andmeraami. Mida näitaks põhiline joongraafik?
-
Impordi Matplotlib faili algusesse, Pandase importimise alla:
import matplotlib.pyplot as plt -
Käivita kogu märkmik uuesti, et värskendada.
-
Lisa märkmiku lõppu lahter, et kuvada andmed kastina:
price = new_pumpkins.Price month = new_pumpkins.Month plt.scatter(price, month) plt.show()Kas see on kasulik graafik? Kas miski selles üllatab sind?
See ei ole eriti kasulik, kuna see lihtsalt kuvab sinu andmed punktide hajuvusena antud kuus.
Muuda see kasulikuks
Et graafikud kuvaksid kasulikke andmeid, tuleb andmeid tavaliselt kuidagi rühmitada. Proovime luua graafiku, kus y-telg näitab kuud ja andmed demonstreerivad andmete jaotust.
-
Lisa lahter, et luua rühmitatud tulpdiagramm:
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price")See on kasulikum andmete visualiseerimine! Näib, et kõrvitsate kõrgeim hind esineb septembris ja oktoobris. Kas see vastab sinu ootustele? Miks või miks mitte?
🚀Väljakutse
Uuri erinevaid visualiseerimise tüüpe, mida Matplotlib pakub. Millised tüübid sobivad kõige paremini regressiooniprobleemide jaoks?
Järelloengu viktoriin
Ülevaade ja iseseisev õpe
Vaata erinevaid viise andmete visualiseerimiseks. Koosta nimekiri erinevatest teekidest ja märgi, millised sobivad kõige paremini teatud tüüpi ülesannete jaoks, näiteks 2D-visualiseeringud vs. 3D-visualiseeringud. Mida sa avastad?
Ülesanne
Vastutusest loobumine:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta arusaamatuste või valesti tõlgendamise eest, mis võivad tuleneda selle tõlke kasutamisest.




