|
3 weeks ago | |
---|---|---|
.. | ||
solution | 3 weeks ago | |
README.md | 3 weeks ago | |
assignment.md | 3 weeks ago | |
notebook.ipynb | 3 weeks ago |
README.md
Vytvorenie regresného modelu pomocou Scikit-learn: príprava a vizualizácia dát
Infografiku vytvoril Dasani Madipalli
Kvíz pred prednáškou
Táto lekcia je dostupná aj v R!
Úvod
Teraz, keď máte pripravené nástroje na budovanie modelov strojového učenia pomocou Scikit-learn, ste pripravení začať klásť otázky o svojich dátach. Pri práci s dátami a aplikovaní riešení strojového učenia je veľmi dôležité vedieť, ako položiť správnu otázku, aby ste mohli plne využiť potenciál svojho datasetu.
V tejto lekcii sa naučíte:
- Ako pripraviť dáta na budovanie modelov.
- Ako používať Matplotlib na vizualizáciu dát.
Kladenie správnych otázok o vašich dátach
Otázka, na ktorú potrebujete odpoveď, určí, aký typ algoritmov strojového učenia budete používať. Kvalita odpovede, ktorú dostanete, bude výrazne závisieť od povahy vašich dát.
Pozrite sa na dáta poskytnuté pre túto lekciu. Tento .csv súbor môžete otvoriť vo VS Code. Rýchly pohľad okamžite ukáže, že sú tam prázdne miesta a mix textových a číselných dát. Je tam tiež zvláštny stĺpec nazvaný 'Package', kde sú dáta zmiešané medzi 'sacks', 'bins' a inými hodnotami. Dáta sú vlastne dosť chaotické.
🎥 Kliknite na obrázok vyššie pre krátke video o príprave dát pre túto lekciu.
Nie je veľmi bežné dostať dataset, ktorý je úplne pripravený na použitie na vytvorenie modelu strojového učenia. V tejto lekcii sa naučíte, ako pripraviť surový dataset pomocou štandardných knižníc Pythonu. Naučíte sa tiež rôzne techniky vizualizácie dát.
Prípadová štúdia: 'trh s tekvicami'
V tomto priečinku nájdete .csv súbor v koreňovom priečinku data
nazvaný US-pumpkins.csv, ktorý obsahuje 1757 riadkov dát o trhu s tekvicami, rozdelených do skupín podľa miest. Ide o surové dáta extrahované z Specialty Crops Terminal Markets Standard Reports, ktoré distribuuje Ministerstvo poľnohospodárstva USA.
Príprava dát
Tieto dáta sú vo verejnej doméne. Môžu byť stiahnuté v mnohých samostatných súboroch, podľa miest, z webovej stránky USDA. Aby sme sa vyhli príliš mnohým samostatným súborom, spojili sme všetky dáta miest do jednej tabuľky, takže sme už dáta trochu pripravili. Teraz sa pozrime bližšie na dáta.
Dáta o tekviciach - prvé závery
Čo si všimnete na týchto dátach? Už ste videli, že je tam mix textov, čísel, prázdnych miest a zvláštnych hodnôt, ktoré musíte pochopiť.
Akú otázku môžete položiť o týchto dátach pomocou regresnej techniky? Čo tak "Predpovedať cenu tekvice na predaj počas daného mesiaca". Pri pohľade na dáta je potrebné urobiť niekoľko zmien, aby ste vytvorili štruktúru dát potrebnú na túto úlohu.
Cvičenie - analýza dát o tekviciach
Použime Pandas (názov znamená Python Data Analysis
), nástroj veľmi užitočný na tvarovanie dát, na analýzu a prípravu týchto dát o tekviciach.
Najskôr skontrolujte chýbajúce dátumy
Najprv musíte podniknúť kroky na kontrolu chýbajúcich dátumov:
- Konvertujte dátumy na formát mesiaca (ide o americké dátumy, takže formát je
MM/DD/YYYY
). - Extrahujte mesiac do nového stĺpca.
Otvorte súbor notebook.ipynb vo Visual Studio Code a importujte tabuľku do nového Pandas dataframe.
-
Použite funkciu
head()
, aby ste si pozreli prvých päť riadkov.import pandas as pd pumpkins = pd.read_csv('../data/US-pumpkins.csv') pumpkins.head()
✅ Akú funkciu by ste použili na zobrazenie posledných piatich riadkov?
-
Skontrolujte, či sú v aktuálnom dataframe chýbajúce dáta:
pumpkins.isnull().sum()
Sú tam chýbajúce dáta, ale možno to nebude mať vplyv na danú úlohu.
-
Aby bol váš dataframe ľahšie spracovateľný, vyberte iba stĺpce, ktoré potrebujete, pomocou funkcie
loc
, ktorá extrahuje z pôvodného dataframe skupinu riadkov (zadaných ako prvý parameter) a stĺpcov (zadaných ako druhý parameter). Výraz:
v prípade nižšie znamená "všetky riadky".columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select]
Ďalej určte priemernú cenu tekvice
Premýšľajte o tom, ako určiť priemernú cenu tekvice v danom mesiaci. Ktoré stĺpce by ste si vybrali na túto úlohu? Tip: budete potrebovať 3 stĺpce.
Riešenie: vezmite priemer stĺpcov Low Price
a High Price
, aby ste naplnili nový stĺpec Price, a konvertujte stĺpec Date tak, aby zobrazoval iba mesiac. Našťastie, podľa vyššie uvedenej kontroly, nie sú chýbajúce dáta pre dátumy alebo ceny.
-
Na výpočet priemeru pridajte nasledujúci kód:
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 month = pd.DatetimeIndex(pumpkins['Date']).month
✅ Ak chcete skontrolovať akékoľvek dáta, môžete použiť
print(month)
. -
Teraz skopírujte svoje konvertované dáta do nového Pandas dataframe:
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
Ak si vytlačíte svoj dataframe, uvidíte čistý, upravený dataset, na ktorom môžete postaviť svoj nový regresný model.
Ale počkajte! Niečo tu nesedí
Ak sa pozriete na stĺpec Package
, tekvice sa predávajú v mnohých rôznych konfiguráciách. Niektoré sa predávajú v jednotkách '1 1/9 bushel', niektoré v '1/2 bushel', niektoré na kus, niektoré na váhu, a niektoré vo veľkých boxoch s rôznymi šírkami.
Tekvice sa zdajú byť veľmi ťažké vážiť konzistentne
Pri skúmaní pôvodných dát je zaujímavé, že všetko, čo má Unit of Sale
rovné 'EACH' alebo 'PER BIN', má tiež typ Package
na palec, na box alebo 'each'. Tekvice sa zdajú byť veľmi ťažké vážiť konzistentne, takže ich filtrujme výberom iba tekvíc s reťazcom 'bushel' v ich stĺpci Package
.
-
Pridajte filter na začiatok súboru, pod počiatočný import .csv:
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
Ak si teraz vytlačíte dáta, uvidíte, že dostávate iba približne 415 riadkov dát obsahujúcich tekvice podľa bushel.
Ale počkajte! Je tu ešte jedna vec, ktorú treba urobiť
Všimli ste si, že množstvo bushel sa líši podľa riadku? Musíte normalizovať ceny tak, aby ste zobrazili ceny za bushel, takže urobte nejaké výpočty na ich štandardizáciu.
-
Pridajte tieto riadky po bloku vytvárajúcom nový 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)
✅ Podľa The Spruce Eats hmotnosť bushel závisí od typu produktu, pretože ide o objemové meranie. "Bushel paradajok, napríklad, by mal vážiť 56 libier... Listy a zelenina zaberajú viac miesta s menšou hmotnosťou, takže bushel špenátu váži iba 20 libier." Je to všetko dosť komplikované! Nebudeme sa zaoberať konverziou bushel na libry, namiesto toho budeme určovať cenu za bushel. Celá táto štúdia bushel tekvíc však ukazuje, aké dôležité je pochopiť povahu vašich dát!
Teraz môžete analyzovať ceny za jednotku na základe ich merania bushel. Ak si ešte raz vytlačíte dáta, uvidíte, ako sú štandardizované.
✅ Všimli ste si, že tekvice predávané na polovičný bushel sú veľmi drahé? Dokážete zistiť prečo? Tip: malé tekvice sú oveľa drahšie ako veľké, pravdepodobne preto, že ich je oveľa viac na bushel, vzhľadom na nevyužitý priestor, ktorý zaberá jedna veľká dutá tekvica na koláč.
Stratégie vizualizácie
Súčasťou úlohy dátového vedca je demonštrovať kvalitu a povahu dát, s ktorými pracuje. Na tento účel často vytvárajú zaujímavé vizualizácie, ako sú grafy, diagramy a tabuľky, ktoré ukazujú rôzne aspekty dát. Týmto spôsobom môžu vizuálne ukázať vzťahy a medzery, ktoré by inak bolo ťažké odhaliť.
🎥 Kliknite na obrázok vyššie pre krátke video o vizualizácii dát pre túto lekciu.
Vizualizácie môžu tiež pomôcť určiť techniku strojového učenia, ktorá je najvhodnejšia pre dané dáta. Napríklad scatterplot, ktorý sa zdá nasledovať líniu, naznačuje, že dáta sú dobrým kandidátom na cvičenie lineárnej regresie.
Jedna knižnica na vizualizáciu dát, ktorá dobre funguje v Jupyter notebookoch, je Matplotlib (ktorú ste videli aj v predchádzajúcej lekcii).
Získajte viac skúseností s vizualizáciou dát v týchto tutoriáloch.
Cvičenie - experimentujte s Matplotlib
Skúste vytvoriť niekoľko základných grafov na zobrazenie nového dataframe, ktorý ste práve vytvorili. Čo by ukázal základný čiarový graf?
-
Importujte Matplotlib na začiatok súboru, pod import Pandas:
import matplotlib.pyplot as plt
-
Znovu spustite celý notebook, aby ste ho aktualizovali.
-
Na konci notebooku pridajte bunku na vykreslenie dát ako box:
price = new_pumpkins.Price month = new_pumpkins.Month plt.scatter(price, month) plt.show()
Je tento graf užitočný? Prekvapilo vás na ňom niečo?
Nie je obzvlášť užitočný, pretože iba zobrazuje vaše dáta ako rozptyl bodov v danom mesiaci.
Urobte ho užitočným
Aby grafy zobrazovali užitočné dáta, zvyčajne je potrebné dáta nejako zoskupiť. Skúsme vytvoriť graf, kde os y zobrazuje mesiace a dáta ukazujú rozdelenie dát.
-
Pridajte bunku na vytvorenie zoskupeného stĺpcového grafu:
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price")
Toto je užitočnejšia vizualizácia dát! Zdá sa, že najvyššia cena za tekvice sa vyskytuje v septembri a októbri. Zodpovedá to vašim očakávaniam? Prečo áno alebo nie?
🚀Výzva
Preskúmajte rôzne typy vizualizácií, ktoré Matplotlib ponúka. Ktoré typy sú najvhodnejšie pre regresné problémy?
Kvíz po prednáške
Prehľad a samostatné štúdium
Pozrite sa na mnohé spôsoby vizualizácie dát. Vytvorte zoznam rôznych dostupných knižníc a poznačte si, ktoré sú najlepšie pre dané typy úloh, napríklad 2D vizualizácie vs. 3D vizualizácie. Čo ste zistili?
Zadanie
Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.