16 KiB
Pradėkite dirbti su Python ir Scikit-learn regresijos modeliams
Sketchnote sukūrė Tomomi Imura
Klausimynas prieš paskaitą
Ši pamoka taip pat prieinama R kalba!
Įvadas
Šiose keturiose pamokose sužinosite, kaip kurti regresijos modelius. Netrukus aptarsime, kam jie skirti. Tačiau prieš pradėdami, įsitikinkite, kad turite tinkamus įrankius, kad galėtumėte pradėti procesą!
Šioje pamokoje išmoksite:
- Konfigūruoti savo kompiuterį vietinėms mašininio mokymosi užduotims.
- Dirbti su Jupyter užrašinėmis.
- Naudoti Scikit-learn, įskaitant diegimą.
- Išbandyti linijinę regresiją praktiniame užsiėmime.
Diegimai ir konfigūracijos
🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie kompiuterio konfigūravimą ML užduotims.
-
Įdiekite Python. Įsitikinkite, kad jūsų kompiuteryje įdiegta Python. Python bus naudojamas daugeliui duomenų mokslo ir mašininio mokymosi užduočių. Dauguma kompiuterių sistemų jau turi Python diegimą. Taip pat yra naudingų Python Coding Packs, kurie palengvina nustatymą kai kuriems vartotojams.
Kai kurios Python naudojimo situacijos reikalauja vienos programinės įrangos versijos, o kitos - kitos. Dėl šios priežasties naudinga dirbti virtualioje aplinkoje.
-
Įdiekite Visual Studio Code. Įsitikinkite, kad jūsų kompiuteryje įdiegta Visual Studio Code. Sekite šias instrukcijas, kad atliktumėte Visual Studio Code diegimą. Šiame kurse naudosite Python Visual Studio Code aplinkoje, todėl galbūt norėsite pasipraktikuoti, kaip konfigūruoti Visual Studio Code Python kūrimui.
Susipažinkite su Python, atlikdami šią mokymosi modulių kolekciją
🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą apie Python naudojimą VS Code aplinkoje.
-
Įdiekite Scikit-learn, sekdami šias instrukcijas. Kadangi jums reikia užtikrinti, jog naudojate Python 3, rekomenduojama naudoti virtualią aplinką. Atkreipkite dėmesį, jei diegiate šią biblioteką M1 Mac kompiuteryje, yra specialios instrukcijos aukščiau pateiktame puslapyje.
-
Įdiekite Jupyter Notebook. Jums reikės įdiegti Jupyter paketą.
Jūsų ML kūrimo aplinka
Jūs naudosite užrašines (notebooks), kad sukurtumėte Python kodą ir kurtumėte mašininio mokymosi modelius. Šio tipo failai yra įprastas įrankis duomenų mokslininkams, ir juos galima atpažinti pagal jų priesagą arba plėtinį .ipynb
.
Užrašinės yra interaktyvi aplinka, leidžianti kūrėjui tiek rašyti kodą, tiek pridėti pastabas ir dokumentaciją aplink kodą, kas yra labai naudinga eksperimentiniams ar moksliniams projektams.
🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
Pratimas - darbas su užrašine
Šiame aplanke rasite failą notebook.ipynb.
-
Atidarykite notebook.ipynb Visual Studio Code aplinkoje.
Jupyter serveris bus paleistas su Python 3+. Užrašinėje rasite vietas, kurias galima
paleisti
, t. y. kodo dalis. Galite paleisti kodo bloką, pasirinkdami piktogramą, kuri atrodo kaip grojimo mygtukas. -
Pasirinkite
md
piktogramą ir pridėkite šiek tiek markdown teksto, pvz., # Sveiki atvykę į savo užrašinę.Tada pridėkite šiek tiek Python kodo.
-
Įveskite print('hello notebook') kodo bloke.
-
Paspauskite rodyklę, kad paleistumėte kodą.
Turėtumėte pamatyti atspausdintą sakinį:
hello notebook
Galite įterpti savo kodą su komentarais, kad savarankiškai dokumentuotumėte užrašinę.
✅ Pagalvokite minutę, kaip skiriasi žiniatinklio kūrėjo darbo aplinka nuo duomenų mokslininko aplinkos.
Darbas su Scikit-learn
Dabar, kai Python yra nustatytas jūsų vietinėje aplinkoje ir jūs jaučiatės patogiai dirbdami su Jupyter užrašinėmis, pasistenkime taip pat susipažinti su Scikit-learn (tariama sci
, kaip science
). Scikit-learn siūlo platus API, kuris padeda atlikti ML užduotis.
Pagal jų svetainę, "Scikit-learn yra atviro kodo mašininio mokymosi biblioteka, palaikanti prižiūrimą ir neprižiūrimą mokymąsi. Ji taip pat siūlo įvairius įrankius modelių pritaikymui, duomenų apdorojimui, modelių pasirinkimui ir vertinimui bei daugybę kitų naudingų funkcijų."
Šiame kurse naudosite Scikit-learn ir kitus įrankius, kad sukurtumėte mašininio mokymosi modelius, skirtus vadinamoms 'tradicinio mašininio mokymosi' užduotims. Mes sąmoningai vengėme neuroninių tinklų ir giluminio mokymosi, nes jie geriau aptariami mūsų būsimoje 'AI pradedantiesiems' mokymo programoje.
Scikit-learn leidžia lengvai kurti modelius ir vertinti jų naudojimą. Ji daugiausia orientuota į skaitinių duomenų naudojimą ir turi keletą paruoštų duomenų rinkinių, skirtų mokymuisi. Ji taip pat apima iš anksto sukurtus modelius, kuriuos studentai gali išbandyti. Pažvelkime į procesą, kaip įkelti iš anksto paruoštus duomenis ir naudoti įmontuotą vertintoją pirmam ML modeliui su Scikit-learn, naudojant pagrindinius duomenis.
Pratimas - jūsų pirmoji Scikit-learn užrašinė
Šis mokymas buvo įkvėptas linijinės regresijos pavyzdžio Scikit-learn svetainėje.
🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
Failo notebook.ipynb susijusio su šia pamoka, ištrinkite visas ląsteles paspausdami 'šiukšliadėžės' piktogramą.
Šiame skyriuje dirbsite su nedideliu duomenų rinkiniu apie diabetą, kuris yra įtrauktas į Scikit-learn mokymosi tikslais. Įsivaizduokite, kad norite išbandyti gydymą diabetu sergantiems pacientams. Mašininio mokymosi modeliai gali padėti nustatyti, kurie pacientai geriau reaguotų į gydymą, remiantis kintamųjų deriniais. Net labai paprastas regresijos modelis, vizualizuotas, gali parodyti informaciją apie kintamuosius, kurie padėtų organizuoti teorinius klinikinius tyrimus.
✅ Yra daug regresijos metodų tipų, ir kurį pasirinkti priklauso nuo klausimo, į kurį norite atsakyti. Jei norite prognozuoti tikėtiną žmogaus ūgį pagal jo amžių, naudotumėte linijinę regresiją, nes ieškote skaitinės vertės. Jei jus domina, ar tam tikra virtuvė turėtų būti laikoma veganiška, ieškote kategorijos priskyrimo, todėl naudotumėte logistinę regresiją. Vėliau sužinosite daugiau apie logistinę regresiją. Pagalvokite apie keletą klausimų, kuriuos galite užduoti duomenims, ir kuris iš šių metodų būtų tinkamesnis.
Pradėkime šią užduotį.
Bibliotekų importavimas
Šiai užduočiai importuosime keletą bibliotekų:
- matplotlib. Tai naudinga grafikų kūrimo priemonė, kurią naudosime linijiniam grafikui kurti.
- numpy. numpy yra naudinga biblioteka skaitinių duomenų tvarkymui Python kalboje.
- sklearn. Tai Scikit-learn biblioteka.
Importuokite keletą bibliotekų, kurios padės atlikti užduotis.
-
Pridėkite importus, įvesdami šį kodą:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selection
Aukščiau importuojate
matplotlib
,numpy
ir importuojatedatasets
,linear_model
beimodel_selection
išsklearn
.model_selection
naudojamas duomenų skirstymui į mokymo ir testavimo rinkinius.
Diabeto duomenų rinkinys
Įmontuotas diabeto duomenų rinkinys apima 442 duomenų pavyzdžius apie diabetą, su 10 kintamųjų, kai kurie iš jų yra:
- amžius: amžius metais
- kūno masės indeksas (BMI)
- vidutinis kraujo spaudimas
- s1 tc: T-ląstelės (tam tikros rūšies baltieji kraujo kūneliai)
✅ Šis duomenų rinkinys apima 'lyties' sąvoką kaip svarbų kintamąjį diabetui tirti. Daugelis medicininių duomenų rinkinių apima tokio tipo dvejetainę klasifikaciją. Pagalvokite, kaip tokios kategorijos gali išskirti tam tikras populiacijos dalis iš gydymo.
Dabar įkelkite X ir y duomenis.
🎓 Prisiminkite, tai yra prižiūrimas mokymasis, ir mums reikia pavadinto 'y' tikslo.
Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami load_diabetes()
. Įvestis return_X_y=True
nurodo, kad X
bus duomenų matrica, o y
bus regresijos tikslas.
-
Pridėkite keletą spausdinimo komandų, kad parodytumėte duomenų matricos formą ir jos pirmąjį elementą:
X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0])
Tai, ką gaunate kaip atsakymą, yra tuple. Jūs priskiriate pirmąsias dvi tuple reikšmes
X
iry
atitinkamai. Sužinokite daugiau apie tuple.Galite matyti, kad šie duomenys turi 442 elementus, suformuotus į 10 elementų masyvus:
(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]
✅ Pagalvokite apie ryšį tarp duomenų ir regresijos tikslo. Linijinė regresija prognozuoja ryšius tarp kintamojo X ir tikslo kintamojo y. Ar galite rasti tikslą diabeto duomenų rinkinyje dokumentacijoje? Ką šis duomenų rinkinys demonstruoja, atsižvelgiant į tikslą?
-
Tada pasirinkite dalį šio duomenų rinkinio, kurią norite pavaizduoti, pasirinkdami 3-ąją duomenų rinkinio stulpelį. Tai galite padaryti naudodami
:
operatorių, kad pasirinktumėte visas eilutes, ir tada pasirinkdami 3-ąjį stulpelį naudodami indeksą (2). Taip pat galite pertvarkyti duomenis į 2D masyvą - kaip reikalaujama grafiko kūrimui - naudodamireshape(n_rows, n_columns)
. Jei vienas iš parametrų yra -1, atitinkama dimensija apskaičiuojama automatiškai.X = X[:, 2] X = X.reshape((-1,1))
✅ Bet kuriuo metu spausdinkite duomenis, kad patikrintumėte jų formą.
-
Dabar, kai turite duomenis, paruoštus grafiko kūrimui, galite patikrinti, ar mašina gali padėti nustatyti logišką skirstymą tarp skaičių šiame duomenų rinkinyje. Norėdami tai padaryti, turite padalyti tiek duomenis (X), tiek tikslą (y) į testavimo ir mokymo rinkinius. Scikit-learn turi paprastą būdą tai padaryti; galite padalyti savo testavimo duomenis tam tikru tašku.
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
-
Dabar esate pasiruošę treniruoti savo modelį! Įkelkite linijinės regresijos modelį ir treniruokite jį su savo X ir y mokymo rinkiniais, naudodami
model.fit()
:model = linear_model.LinearRegression() model.fit(X_train, y_train)
✅
model.fit()
yra funkcija, kurią pamatysite daugelyje ML bibliotekų, tokių kaip TensorFlow. -
Tada sukurkite prognozę, naudodami testavimo duomenis, naudodami funkciją
predict()
. Tai bus naudojama linijai nubrėžti tarp duomenų grupių.y_pred = model.predict(X_test)
-
Dabar laikas parodyti duomenis grafike. Matplotlib yra labai naudinga priemonė šiai užduočiai. Sukurkite sklaidos grafiką visiems X ir y testavimo duomenims, o prognozę naudokite linijai nubrėžti tinkamiausioje vietoje tarp modelio duomenų grupių.
✅ Pagalvokite, kas čia vyksta. Tiesi linija eina per daugybę mažų duomenų taškų, bet ką ji iš tikrųjų daro? Ar galite pastebėti, kaip ši linija gali padėti numatyti, kur naujas, dar nematytas duomenų taškas turėtų atsidurti santykyje su grafiko y ašimi? Pabandykite žodžiais apibūdinti praktinį šio modelio pritaikymą.
Sveikiname, jūs sukūrėte savo pirmąjį linijinį regresijos modelį, atlikote prognozę su juo ir pavaizdavote ją grafike!
🚀Iššūkis
Pavaizduokite kitą šio duomenų rinkinio kintamąjį. Užuomina: redaguokite šią eilutę: X = X[:,2]
. Atsižvelgiant į šio duomenų rinkinio tikslą, ką galite sužinoti apie diabeto progresavimą kaip ligą?
Po paskaitos testas
Apžvalga ir savarankiškas mokymasis
Šioje pamokoje dirbote su paprasta linijine regresija, o ne su univariante ar daugiavariante regresija. Pasidomėkite skirtumais tarp šių metodų arba peržiūrėkite šį vaizdo įrašą.
Plačiau pasiskaitykite apie regresijos sąvoką ir pagalvokite, kokius klausimus galima atsakyti naudojant šią techniką. Norėdami giliau suprasti, peržiūrėkite šį vadovą.
Užduotis
Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti 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 profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.