×

We use cookies to help make LingQ better. By visiting the site, you agree to our cookie policy.


image

Tölvunarfræði. María Óskarsdóttir - fyrirlestrar, Hreinsun gagna

Hreinsun gagna

Ókei, sem sagt í dag, þá ætlum við að tala um, hérna, það sem kallast data cleaning eða hreinsa gögnin sem er, hérna, mjög mikilvægt skref áður en maður byrjar að að vinna með þau og, og hérna yfirleitt það skref sem tekur hvað lengstan tíma af því að maður þarf rosalega oft að fara aftur og hreinsa meira þegar maður byrjar að vinna með gögnin. Maður áttar sig á því að kannski er ekki alveg allt eins og það á að vera og þá þarf maður fara til baka og, og, og, hreinsa betur og það er sem sagt talað um það að þetta skref taki alveg áttatíu prósent af tímanum í þessum analytics process sem sagt frá því að maður er með gögn þangað til að maður er kominn með einhvers konar módel. þá er þetta það að hreinsa gögnin og koma þeim svona á þetta form sem að er hentugt það sem er lang sem sagt tímafrekast en en áður en við förum í það þá ætla ég aðeins að hérna tala við ykkur um dagskrána hjá okkur vegna þess að gestafyrirlesarinn okkar hann þurfti að færa til hann átti að vera hérna sjöunda febrúar. En af því að hann ætlar að fara á UTmessuna þá ákváðum við að færa hans fyrirlestur, hérna, til tíunda febrúar á mánudag og, hérna, vegna þess að UTmessan er náttúrulega svona, hérna, ráðstefna þar sem er verið að ræða tækni sem er að gerast á Íslandi, þá ætlum við að hérna hafa engan fyrirlestur þennan dag þannig að þið öll getið farið á UTmessuna líka og hlustað á fyrirlestra þar og mér skilst að séu sem sagt einhverjir afsláttar og svoleiðis fyrir nemendur, þannig að ef þið hafið áhuga á því endilega kíkið á það. Það verður mjög mikið af skemmtilegum fyrirlestrum sem sagt kynntir þarna á þessari ráðstefnu og vegna þess að við þurftum aðeins að breyta til í dagskránni þá hérna á mánudaginn þá ætla ég að gefa ykkur val um það hvort þið viljið að ég tali um model evaluation um það hvernig maður metur það, hversu góð módelin manns eru eða hvort ég eigi að tala um tengslanet, social network analytics, hérna, þar sem við erum að raunverulega að nota þessar analytics aðferðir, en á tengslanetum og, og, hérna, það er til dæmis gert, hérna, já, náttúrulega á öllum þessum tengslanetum sem við erum öll náttúrulega hluti af Facebook, Twitter bara þú veist vinanetinu okkar allt mögulegt. Þannig að þetta átti að vera tveir fyrirlestrar. En út af þessu hérna endurskipulagi þá hérna þurfum við að velja annaðhvort þannig að hverjir myndu vilja model evaluation? Réttu upp hönd. Ókei, og social networks? Ókei. Þá verður það model evaluation. Ekki málið þá verðum við að tala um accuracy og AUC og svona ýmislegt skemmtilegt. Ókei, þá er það komið. Og svo ætla ég aðeins að tala um sem sagt námsmatið í námskeiðinu. Eins og þið vitið. Þá er sem sagt námsmatið byggt á kynningum sem þið eruð með um svona machine learning algóritma annars vegar og svo eru þessi lokaverkefni hins vegar og á Canvas er búið að búa til sem sagt assignments fyrir þetta bæði þið getið farið og tékkað á þeim sem sagt þar er nákvæm lýsing á hvers er ætlast til af ykkur í báðum þessum hlutum á námskeiðinu. Fyrir kynningarnar þá erum við búin að sem sagt raða ykkur í hópa, þrír til fjórir nemendur í hverjum hóp. en út af sem sagt við erum einn hóp sem er á Akureyri og sá hópur hérna sem sagt mun hugsanlega koma sem sagt suður og kynna sitt verkefni og þess vegna erum við ennþá að negla niður dagsetningar fyrir kynningarnar fyrir hvern hóp upp á það sem sagt hvenær hópurinn á Akureyri gæti mögulega komið suður. Þannig að það er ennþá verið að vinna í þessum dagsetningum fyrir það hvenær hvaða hópur verður með fyrirlestur. En við erum búin að sem sagt setja inn dagsetningar fyrir fyrstu tvo hópana. Það er sem sagt þá annars vegar eins og þið sjáið hér fjórtánda febrúar decision trees og random forests og svo sautjánda febrúar hérna þar sem erum að tala um regression og hóparnir sem eiga að sjá um þessa fyrirlestra. Þeir eru þegar, þegar búið að assign-a þá þannig ef þið farið inn í, inn í hérna groups sem sagt ef við förum, við förum, úps klúðraði ég einhverju? Nei. Ef við förum sem sagt hingað þá hérna sjáið þið í fyrsta lagi að það komið hérna assignment: final project, fresturinn tuttugasta og fimmta mars og svo class presentation það er undated af því þið eruð öll með mismunandi dagsetningu og svo ef þið farið hérna í people og í groups þá sjáið þið sem sagt hérna class presentation. Þetta eru sem sagt kynningarnar, ykkar kynningar í tíma þar sem þið kynnið mismunandi topic og þá sjáið þið hérna strax á fjórtánda febrúar, class presentation. Ef við expöndum það þá sjáið þið hvaða nemendur eru ábyrgir fyrir því og svo eins fyrir regression sautjánda febrúar þá eru það þessir nemendur sem eru ábyrgir fyrir því og svo restina af þessum efnum munu vera að assign-uð bara vonandi í næstu viku, þannig að þið hafið öll á hreinu hérna hvenær þið eigið að vera að kynna. En svo er annar hluti af þessu þar nemendur sem sagt fyrirlestrum ykkar, að er ekki bara nemendur sem eiga að kynna verkefni eða, þú veist, kynna algóritma, heldur eru aðrir nemendur í salnum sem eiga að spyrja spurninga. Þannig að þeir þurfa að vera rauninni heima fyrir tímann að kynna sér efnið og spyrja þá sem eru að kynna spurninga og, og hérna það eru sem sagt gefnar einkunnir fyrir það að spyrja sem sagt þessi þátttaka í tímum, það er gefin einkunn fyrir það og á sama hátt þá er sem sagt er ykkur assign-að ákveðið topic til að spyrja spurninga um og þið sjáið það hérna alveg, nei bíddu nú við, já hérna. Hérna sem sagt hérna sjáið þið, getið þið séð hvenær þið eigið að spyrja spurninga, þannig að til dæmis hérna fjórtánda febrúar þá eiga þessir nemendur að spyrja spurninga þannig að þeir þurfa að fyrir þennan tíma líka að kynna sér decision trees og random forests og vera tilbúnir með spurninga eða komment eða eitthvað og eitthvað sem er ekki alveg trivial. Eitthvað sem er svona kannski þarf aðeins að pæla í. Og hérna er búið að assign-a fyrir allt saman. Þannig að vinsamlegast hérna kíkið á þetta til að vera viss um það hvenær þið eru ábyrg fyrir annað hvort því að halda fyrirlestur eða að spyrja spurninga. Þetta voru sem sagt kynningarnar. Og svo erum við með, hvar ertu, þarna ertu. Þetta voru kynningarnar og þessi deadlines eru sem sagt per schedule eins og þið sjáið í syllabus-num svo þurfið þið að spyrja spurninga og svo erum við með final project-ið þar sem að þið eigið að velja efni og velja ykkur hópa. Það eru tveir til þrír í hóp. Og þið þurfið að láta okkur vita á föstudaginn næsta hvaða topic og hvaða hóp þið eruð með. Og þið getið sem sagt bara raðað í hópa innan canvass, og endilega sendið okkur e-mail með ykkar topic-i hvað þið ætlið að fjalla um í ykkar verkefni. Og þessu þarf að skila inn tuttugasta og fimmta mars, og svo tuttugasta og sjöunda mars og þrítugasta mars. Þá verðum við með kynningar í tíma þar sem þið kynnið fyrir öllum ykkar verkefni og þá erum við að tala um svona korter, tuttugu mínútur þar sem ég get bara farið í gegnum notebook-ið sem að þið bjugguð til sem ykkar skil og ég ítreka það að sem sagt check-iði á Canvas í hvaða hópum þið eruð fyrir hérna sem sagt class presentation-ið og líka fyrir spurningarnar og aðeins nánar um kynningarnar, að þið þurfið að láta okkur fá sem sagt ykkar kynningu, þremur virkum dögum fyrir kynninguna, þannig að við getum farið í gegnum það og gefið ykkur, feedback og svoleiðis. Þá sem sagt sendið það bæði á, á mig og Magnús og svo er sem sagt gefið sem sagt fyrir þessa fjóra hluta hversu vel þið þekkið efnið, hversu vel þið kynnið efnið og hversu góð dæmi þið gefið og hversu góð verkefni þið búið til því þið eigið líka að búa til dæmi sem að hinir nemendarnir eiga að leysa á dæmatímablöðum. Þannig þið eigið að búa til dæmi þar sem er verið að nota random forest til dæmis. Svo mun það koma inn á dæmatíma verkefnið sem allir eiga að skila. Þannig að það er ekki nóg bara með því að kynna fyrir hinum hérna eitthvað, eitthvað topic þið eigið líka að búa til verkefni sem hinir eiga að leysa þannig að allir geti lært. Og svo þessir sem eru að spyrja spurninga bara svona smá hérna já, punktar fyrir þá. Eins og stendur hérna að við erum að leita eftir því að þið sýnið að þið þekkið efnið og þið getið gert það á einn af þessum fjóra vegu sem stendur hér sem sagt að leiðrétta eitthvað sem var sagt vitlaust í kynningunni, til dæmis að að útskýra eitthvað sem var minnst á í kynningunni, benda á og tala um einhvern ákveðinn hluta sem var ekki talað um í kynningunni, eitthvað svona aukalega til dæmis og hvernig er hægt að nota þessa aðferð í raunveruleikanum eða hvernig hún er notuð í raunveruleikanum og og hérna og svo kannski einhver svona sniðug aðferð sem hægt er að nota þegar maður er að vinna með þessa aðferð í Python. Til dæmis ef maður er að tune-a einhverja parametra eða eitthvað, þið komið eitthvað sniðugt insight í það hvernig gott er að tune-a parametra fyrir random forests, eitthvað svoleiðis, eða þú veist eitthvað sem maður þarf að passa sig á þegar maður er að búa til decision tree, hvað þú veist er það sem getur farið úrskeiðis þar til dæmis þannig að þetta er svona ýmislegt sem maður getur haft í huga þegar maður er að er að finna góðar spurningar og svo að lokum fyrir lokaverkefnið þannig þið vinnið í hópum tvö til þrjú að einhverri ákveðinni topic-i sem þið veljið sjálf. Þá er þetta hérna hvernig við munum gefa fyrir það, það er sem sagt cleaning and wrangling hvernig þið hreinsið upp gagnasafnið ykkar, og sem sagt skilningur og notkun á þessum predictive techniques þessum machine learning aðferðum sem við erum að fara að tala um næstu vikur, hversu vel skiljið þið þær og hversu vel notið þið þær eruð þið að nota rétta aðferð fyrir ykkar gagnasafn og eruð þið að túlka niðurstöðurnar rétt. Og svo snýst þetta um að maður sé sem sagt að segja einhverja sögu í þessu í þessu hérna notebook-i sem þið skilið inn og er sagan sem þið segið meikar hún eitthvað sense? Og svo sem sagt hvort þið séuð að nota myndræna framsetningu á réttan og og hérna réttan hátt og á þann hátt að það sem sagt bæti framsetninguna eruð þið er ykkar, myndræna framsetning að að enhance-a allt allt verkefnið þannig að hafið þetta í huga líka þegar þið vinnið að lokaverkefninu. Og ég bara vill hérna minna ykkur á það að byrja fyrr en síðar að þetta mun taka meiri tíma heldur en heldur en þið haldið. Ókei, eru einhverjar spurningar varðandi kynningar eða verkefni eða skil? Er þetta allt saman ljóst? Ókei. Og allir eru með á hreinu hvenær þeir eiga að spyrja spurninga? Og þeir sem eru með fyrstu tvær kynningarnar eru með það á hreinu? Ókei. Heyrðu, ok þá ætlum við að fara að tala um það að að sem sagt hreinsa gögn og hvað snýst það um? Já, það er sem sagt minnst hérna á á fjóra mismunandi þætti sem sem hérna maður á að hugsa um þegar maður er að hreinsa gögn. Í fyrsta lagi að sem sagt já, laga raunverulega format-ið og og samræma format á mismunandi gögnum af því þegar það er verið að save-a gögn og færa þau á milli mismunandi staða þá gerist það oft að það verða svona hérna inconsistencies eins og til dæmis með tíma eitthvað sem er að er að hérna vinna með gögn í þú veist Asíu og á Íslandi þá eru náttúrulega mismunandi tíma zone, þannig að kannski að að hérna samræma tímann þar með að þú veist draga einhverja klukkutíma af eða eitthvað eða hérna til dæmis líka bara með með svona fjárhæðir. Fólk sem er að vinna í Bandaríkjunum, fólk sem er að vinna í Evrópu er náttúrlega er að nota mismunandi hérna gjaldmiðla, dollar-a og evrur þannig að það þarf að samræma það líka þannig það er svona það sem við tölum um að um að samræma þessi þessi formöt, og svo það sem gerist líka mjög gjarnan, að það eru gögn sem vantar það getur verið margar ástæður fyrir því af hverju gögnin vantar. En við þurfum að gera eitthvað við það. Það gæti bara hreinlega gerst þegar við erum að sameina mismunandi gögn úr mörgum töflum og það verða til auðir, auðir reitir eða að það bara vantar hreinlega mælingar fyrir ákveðnar ákveðnar observation-ir þannig að hérna maður þarf að pæla aðeins í því hvernig er best að fylla inn þessi þessi hérna göt í gögnunum og svo sem sagt getur líka gerst náttúrlega að að það eru röng gögn í töflunni að að hérna kannski er einhver sem er skráður með aldurinn mínus hundrað eða einhver sem er skráður með aldurinn hérna fimm þúsund. Og það er náttúrulega eitthvað sem er bara getur ekki verið auðvitað og það getur þá verið vegna þess að einhver sem var að slá inn þessar tölur hann bara gerði það vitlaust og þess vegna verður til svona hérna villa í gögnunum og og þá þarf að þarf að laga það og svo líka hérna sem er mjög algengt vandamál það er það sem heitir að standardizing categories, til dæmis þegar að fólk er að skrá inn lönd Bandaríkin, þá geturðu skrá það inn sem u s a eða U punktur S punktur A punktur eða U S eða United States eða United States of America. Allt er þetta nákvæmlega það sama en skrifað á mismunandi hátt og ef þú ætlar að bara taka þennan dálk með þessum löndum og nota sem sem sagt faktor í þinni greiningu þá muntu mun allt þetta flokkast sem mismunandi flokkur, þó það sé raunverulega sami flokkurinn. Og þess vegna þarf að fara í gegnum þennan flokk og og sem sagt sjá til þess að þetta sé allt táknað á sama hátt, þannig að þetta valdi ekki neinum neinum hérna misskilningi þegar maður byrjar að vinna úr gögnunum, þannig að það þarf að fara í gegn og passa sig á því að allt sem er einhver týpa af þessu er það sama. Já, þetta getur gerst til dæmis með kyn og og ýmislegt annað. Ókei, og svo sem sagt þegar maður er búinn að pæla í þessum hlutum þá þarf maður líka að pæla í því hvernig taflan manns lítur út og það snýst þá um að svona færa til gögnin þannig að þau séu já á hentugu formi fyrir analísuna og það sem sagt snýst um það kannski að vera með svona víða töflu og gera hana svona að langri töflu með því að taka dálka og búa til raðir og ýmislegt en ég ætla að sýna ykkur hérna smá myndband. Ókei, hvað hérna hvað sáum við? Hvað var þetta? [UNK] Þetta er sem sagt tól sem að hérna er fyrir fólk kannski sem er ekkert voðalega gott í því að forrita eða í að nota Python þannig að þú ert með þetta svona alltaf svona visual hérna platform-i þar sem þú gast tekið raunverulega hérna einhverja töflu og komið henni á svona format sem hentar vel fyrir áframhaldandi analísu af því að gögn er best að vinna með á einhvers konar svona form. Þar sem þú ert með sem sagt observations, í raun og veru öll sem sagt gildin sem eru mæld sem sagt í sama hérna unit-i og variables sem eru sem sagt eða breytur, sem eru þá sem sagt þessir eiginleikar sem við erum að að mæla og það er á þessu formi sem við viljum yfirleitt vera að vinna með gögn sem hann var að gera í þessu tóli var að taka þessi gögn sem voru svona frekar unstrúkteruð og og kannski erfitt að vinna með og koma þeim á einhvers konar svona form þar sem þú ert með sem sagt observations og variables eða eða features og það er oft talað um sem sagt tvennskonar data formöt, annars vegar long og hins vegar wide data formöt þar sem að svona löng gögn eru með hérna sem sagt eina observation og eina measurement í hverri röð. Þar sem þetta verður þá það svona hérna Já, langt niður og það er mjög gott þegar maður er að plotta einhvers konar summary og svona alls konar að svo ertu líka með eitthvað sem heitir wide data format, þar sem að hver hérna mæling fyrir hverja observation er í sem sagt er í einstakri röð og það er yfirleitt format-ið sem við erum að vinna með gögn sérstaklega í svona predictive modeling að þá ertu með allar sem sagt observation-irnar þínar og gildið fyrir hvern fyrir hverja hverja breytu fyrir sig og ef við skoðum þetta myndrænt. Þá mundi þetta vera sem sagt langt data format það sem við erum með þið sjáið Afganistan kemur oft fyrir og svo ertu með hérna árin í næsta dálki og svo ertu með hérna key og svo ertu með gildið í lokin þannig að þetta er svona gott þegar þú ert að summerize-a gögn af því að þú ert með breyturnar raunverulega svona niður og og hérna en en observations-in þau svona eru ná yfir kannski margar línur meðan á móti þegar þú ert með svona breytt format þá ertu með mælingarnar í hverri röð. Þannig að nú sjáum við til dæmis að að hérna Afganistan er bara í tveimur röðum meðan að hérna þá varð það alveg í fjórum röðum og það er vegna þess að raunverulega sem við viljum vera að mæla hér er þetta er þetta value og við viljum hafa öll value-in í sér dálki. Og við erum með sem sagt eitt value fyrir cases og eitt value fyrir population, þannig að með því að búa til dálk sem heitir cases og dálk sem heitir population þá fáum við þetta á svona breiðara format þar sem að mældu gildin eru sem sagt í hverri röð. Þannig að til þess að ná þessu, þessum já þessum gullna standard að vera eitthvað sem heitir hrein gögn þá þurfum við sem sagt að hafa þetta svona, að sérhver breyta er í dálk og inniheldur gildi og sérhver hérna observation myndar röð og hver sem sagt hvert unit myndar gögn og þetta er það sem kallast gagnasafnsfræðinni þriðja normal form, þannig að ef þið munið eftir því úr gagnasafnsfræði þá er þetta það sem heitir þetta þriðja normal form. Og það er sem sagt þessi þessi hérna status sem við viljum oft ná út frá gögnunum okkar. Þannig að ef við erum með þetta gagnasafn hér þá erum við sem samt með einhvers konar treatment a og b og einhverja hérna einstaklinga sem eru að fá þetta treatment. Og þetta er dæmi um gagnasafn sem er ekki á góðu format-i af því að við getum ekki gert greinarmun á treatment-unum þannig að ef við umbreytum því og gerum það svona þá er það orðið betra af því að við getum flokkað eftir treatment og til dæmis reiknað meðaltal allra sem fengu treatment b og meðaltal allra sem fengu treatment a á miklu auðveldari hátt heldur en í töflu hérna í efri töflunni og nota bene, þetta náttúrulega er bara einföld dæmi um leið og þú ert kominn með tíu þúsund, hundrað þúsund raðir þá náttúrlega er ekkert voðalega auðvelt að sjá skiljið þið, já, þetta er bara svona. Þú veist, af því þetta er svo lítið en um leið og við komum einhvern fjölda af af mælingum þá náttúrlega verður þetta allt mjög óyfirstíganlegt að ætla bara að horfa á þetta. Þannig að er mjög gott að að kunna að sem sagt að hérna umbreyta gögnunum. Ókei, og hvernig ætlum við svo að hreinsa þessi gögn? Nokkur dæmi í þessu í þeirri töflu þá sjáum við erum með sem sagt einhvers konar þetta eru trúarbrögð og svo er þetta hérna innkoma miðað við trúarbrögð þannig að við sjáum það að tuttugu og sjö agnostic people eru með hérna minna en tíu þúsund dollara í laun. Og ef við horfum á þessa töflu þá sjáum við að í dálkunum er eru upplýsingar í dálkaheitunum þarna efst eru upplýsingar sem við kannski myndum vilja geta notað. Og þetta er eitt dæmi um um sem sagt tilfelli þar sem að gögnin eru ekki hrein af því þegar þau eru svona þá getum við ekki notað upplýsingarnar sem er í dálka heitunum þannig að við þurfum að við þurfum að sem sagt laga það. Og það er gert með því að ég geri eitthvað sem heitir unpivot eða eða melt, þar sem við tökum raunverulega dálkaheitin og búum til eigin dálk úr þeim og svo fáum við í þriðja dálkinn hérna sem sagt fjöldann. Þannig að ef þið horfið á þetta þá erum við með hérna, agnostic minna en tíu þúsund tuttugu og sjö. Og það er það sem var í efsta reitnum þarna þannig að við erum búin að svona umbreyta töflunni þannig að hún er það er auðveldara að skilja hana, við erum búin að taka hana, hún var sem sagt wide og við erum búnir að gera hana langa. Og þetta getum við gert með því að nota fall í í hérna pandas sem heitir melt það sem að þið sjáið sem sagt kóðann hér að við erum með hérna töfluna okkar og við köllum þetta melt og hérna við viljum sem sagt að religion haldi sér, trúin á að vera kjur þarna en við viljum við viljum hérna taka við viljum taka þennan hérna næsta dálk, annan dálkinn sem að var, nei fyrirgefðu. Við viljum taka, sko já. Sem sagt við erum með religion á að halda sér, allir hinir dálkarnir eiga að breytast og verða að einum dálki. Og sá dálkur á að heita income og og hérna það sem á að koma inn í röðina fyrir þetta income á að heita frequency þannig að eftir að við erum búin að kalla á þetta falla þá mun það líta svona og við sjáum þetta í Python notebook-inu á eftir hvernig þetta virkar nákvæmlega. En ókei og hér er annað dæmi þar sem við erum með gögn sem eru með vandræði að við erum með sem sagt margskonar einingar í sem sagt einni einni töflu, þannig að hérna erum við með sem sagt einhver lög sem voru á einhverjum hérna sem sagt topplista í í hérna einhverjum svona billboard lista og hérna erum við bæði með sem sagt já tvær sem sagt einingar í einni töflu og það er yfirleitt dálítið slæmt að hafa það þannig að við viljum búa til tvær töflur úr þessari einu þar sem önnur heldur utan um lögin og hin heldur utan um rank-in á þessum lögum. Ókei, og svo erum við hérna dæmi um það að við erum með margar breytur geymdar í einum dálk, þannig að þetta gagnasafn hér það segir til um það hvað voru mikið af tilfellum um berkla í einhverju ákveðnu landi eftir sem sagt aldri og kyni og þannig að þið sjáið hérna ef þið horfið á þetta við erum með, ókei. Hérna eru löndin og hérna er árið en svo erum við bara með einhverjar tölur. Og ef þið horfið á dálkaheitin hérna vitið þið hvað þeir standa fyrir M-ið hérna er male, núll þýðir frá núll til fjórtán þannig að þetta er hérna í landinu a d árið tvö þúsund var enginn karlmaður á aldrinum núll til fjórtán ára með berkla og svo framvegis, þannig að þið sjáið að það er rosalega miklar upplýsingar geymdar í hérna dálkaheitunum sem þýðir það eins og áðan að við getum raunverulega ekki unnið með upplýsingarnar sem eru í þessum dálkaheitum og þetta er sem sagt annað dæmi um það þar sem við viljum breyta töflunni og svo er annað að við erum með sem sagt hérna NaN sem sagt ekki neitt svo erum við líka með núll þannig að það er líka misræmi á milli þess hvernig það að mælingar vanti sé táknað þannig að til þess að breyta þessu þá á sama hátt notum við aftur þetta melt fall með því að melt-a saman kyni og aldri inn í hérna mismunandi dálka og þannig við fáum sem sagt þrjá nýja dálka úr þessum sem við melt-uðum, sem að voru þá sem sagt kyn, neðra sem sagt neðri mörkin á aldursbilinu og svo efri mörkin á aldursbilinu og eins á eftir þá mun fara í gegnum Python notebook-ið hvernig þetta er gert. Ókei. Og hérna er annað dæmi einhver sem var að mæla hvað er þetta hitastig? í Mexíkó. Og, og, hérna, ókei, ef þið horfið á þessa töflu hvað er svona það fyrsta sem þið takið eftir? Hvað stingur svolítið í augun hér. [UNK] Það er svolítið mikið af tómu, nákvæmlega. Þannig að þetta er kannski ekki ideal format fyrir þessi gögn, enda sjáum við að við erum með sem sagt þetta er sem sagt mælitæki og svo erum við með árið hérna svo erum við með mánuðinn og bara númerið á mánuðinum, þetta er engin dagsetning heldur bara hérna mánuður eitt. Og svo erum við með sem sagt max hitan og min hitan og já og svo er sem sagt hérna dálkarnir þeir tákna dagana þannig að við getum séð hérna tvö þúsund og tíu í febrúar, annan febrúar, þá var minnsta hitastig í fjórtán komma fjórar mesta hitastigið í tuttugu og sjö komma þrír. En en þetta er náttúrulega kannski ekki alveg besta í heimi. Þannig að hérna er annað sem við viljum hérna laga, í þessu tilfelli þá erum við með breytur sem eru geymdar bæði í röðum og dálkum. En þegar við erum búin að hreinsa þetta upp þá lítur þetta svolítið betur út þá erum við með mælitækið við erum með dagsetninguna sem heila dagsetningu og svo erum við með max hitann og min hitann svo þetta lítur svolítið betur út. Ókei, og svo er annað dæmi hérna þar sem við verðum með algengustu barna nöfn í Illinois, annars vegar árið tvö þúsund og fjórtán og hins vegar árið tvö þúsund og fimmtán og þessi gögn eru geymd í tveimur mismunandi fælum og eina leiðin til að vita hvort árið við erum að tala um er sem sagt í heitinu á skránni. Við segjum: Ókei, hérna Alexander hann var með frequency-ið sjö hundruð og þrír en þá þurfum við að kíkja á, á hérna hvað fællinn heitir til þess að vita sem sagt hvort það var tvö þúsund og fimmtán eða tvö þúsund og fjórtán, þannig að hérna í þessu tilfelli þá eru gögnin dreifð út um mismunandi fæla. Og þessi mikilvæga breyta ártalið sjálft kemur bara fram í nafninu á fælnum þannig að þetta er annað dæmi þar sem við þurfum aðeins að taka til og í þessu tilfelli. Það er raunverulega bara að loop-a yfir allar mögulegar töflur, í þessu tilfelli, þessa tvo fæla sem við erum með og sameina gögnin og svo að færa þau aðeins til þannig að við séum með sem sagt hérna við erum með sem sagt hvar í röðinni það er, hversu algengt þetta var nafnið er, hversu oft það kom fyrir, hvort það sé karlkyns eða kvenkyns nafn og svo árið þannig að ef við myndum scroll-a niður í þessari töflu þá mundi bráðum byrja birtast hérna tvö þúsund og fimmtán í ár dálkinum. Ókei, hérna í Python notebook-inu er farið í gegnum sem sagt allt hérna allan kóðann á bak við þetta og ég ætla að gera það á eftir. En fyrst ætla ég að tala aðeins um hérna það sem heitir data preprocessing. Það er ekki nóg bara að að hérna möndla gögnin þannig að þau komi á svona ákveðið form sem ég gat dílað við heldur þurfum við líka að kíkja á gildin í töflunni okkar til að sjá hvort það sé eitthvað óeðlilegt við þau hvort það sé eitthvað sem við þurfum að laga. Þannig að af hverju þurfum við að að preprocess-a þessi gögn? Við þurfum kannski að finna eitthvað gott orð yfir að preprocessa, einhverjar hugmyndir? Undirbúa, undirbúa gögnin. Af hverju þurfum við að gera það? Nú eins og ég er búinn að nefna þá eru gögnin full af noise-i það er fullt af villum sem bara verða til við gagnaöflun, til dæmis að einhver sem er að skrái inn aldur skrifar inn óvart inn negatífan aldur eða kannski bætir óvart við einu núlli. Þann að einstaklingur sem er tuttugu ára er allt í einu orðin tvö hundruð ára. Og þetta eru bara náttlega mannleg mistök sem gerast enda þetta er ekki bara fólk þetta gerist líka bara í mælitækjum og alls konar þannig að þetta er svona eitthvað sem þurfum að hafa augun opin fyrir og að auki þá erum við með sem sagt svona inconsistency eins og við töluðum um með hérna USA áðan eða þá að kannski sumir setja inn núll í gæsalöppum í staðinn fyrir að hafa bara venjulegt núll eða bara autt þegar að þegar mælingin er núll og svo kannski eða einhvers konar könnun í gangi og fólk er spurt hvað það er með í laun? Þá vill það ekki gefa það upp þá og ertu bara með autt gildi í í þeim dálki. Og svo þegar þú ert að sameina töflur þegar þú ert merge-a töflur þá verða bara til tóm gildi það bara gerist og þess vegna verða NA og NaNs og bara sem sagt tómir reitir í töflunum okkar, já, og svo líka duplicate data eins og ég minntist á seinast held ég, að aldur og fæðingarár segir nákvæmlega það sama. Þetta er þær breytur sem hérna hafa nákvæmlega sömu upplýsingar að geyma, þannig að við þurfum líka að hafa hérna opin augun fyrir því að vera ekki með dálka sem eru með tvöföldum upplýsingum og svo hérna vil ég hamra á því að til þess að geta byggt gott módel þarf að leggja mikla vinnu í þetta þennan undirbúning gagnanna í þetta preprocessing, af því að ef við erum með gögn sem eru skítug þá verður módelið líka bara rangt. Og það er oft talað um hérna þetta garbage in garbage out ef þið setjið eitthvað sem er rusl inn í módelið ykkar þá bara fáið þið rusl út úr módelinu ykkar. Þannig að hafið þetta í huga, að að hérna ekki ekki gleyma þessu mikilvæga skrefi, þó að það taki ógeðslega langan tíma og sé hundleiðinlegt. Ég hef alveg verið þar, sko. En hérna það er ekkert skemmtilegt og en samt bráðnauðsynlegt eins og taka lýsi. Hérna, ókei, sem sagt þegar við erum að vinna með undirbúa gögnin okkar þá þurfum við byrja á því að díla við gögn sem vantar og þá spyr maður sig af hverju vantar gögnin? Getur náttúrlega bara verið að hérna bara mælingin sé ekki til staðar, til dæmis ef þú vilt vita hversu mikið einhver svikari svindlaði út úr tryggingafyrirtækinu, þá ef einstaklingurinn er ekki svikari þá náttúrulega er hann ekki búinn að svindla neitt og þá náttúrulega ertu bara með tómt þar eða í einhverri könnun einhver vill ekki gefa upp launin sín þá bara vantar það og svo, eins og ég sagði líka, að það verða til error-ar þegar þú ert að sameina gögn og þegar þú ert með missing values þá hefurðu sem sagt þrennt sem þú getur gert. Þú getur bara látið þetta vera eins og það er og sagt sem svo, ókei, það að þetta vanti það þýðir eitthvað og þá geturðu bara búið til sem sagt nýjan hérna dálk fyrir það sagt hérna þú veist einn dálkur sem heitir upplýsinga vantar og þá bara ertu með einn og núll þar til dæmis og þá veistu bara að ákveðnar upplýsingar vantar, ókei. Eða þú getur eytt út þeim röðum eða þeim dálkum þar sem vantar breytur, og þá er það bara eitthvað sem maður ákveður í bara hvert skipti, eins og til dæmis ef einhver er að svara könnun og hann ákveður bara að svara ekki ógeðslega mörgum spurningunum, þá kannski er sú mæling niðurstöðurnar frá þessum einstaklingi þær eru óáreiðanlegar kannski svaraði hann bara einni spurningu af tíu og þá kannski bara best að sleppa þeim alveg bara eyða honum út úr gögnunum eða þú ert með einhverja einhverja breytu sem að hérna rosalega fáir svöruðu þá mundirðu bara sleppa þeirri breytu líka bara eyða henni út úr gagnasafninu. En svo það sem er algengt að gera. Er sem sagt að replace-a þessi missing value en notið einhverja aðferð til þess að meta hvað ætti að koma þarna í staðinn. Og það sem maður þarf að passa sig á í þessu öllu saman er að vera sem sagt samkvæmur sjálfum sér, þegar maður er að díla við þessi gögn sem vantar og gera það alltaf eins í ákveðnum gagnasafni, ekki, sem sagt, þú veist, þú ert að greina einhver gögn og svo bara skiptirðu allt í einu um skoðun um það hvernig þú vilt díla við þessi gildi þú verður að gera það eins í öllu öllu verkefninu. Hérna sjáum við til dæmis dæmi það sem ég nefndi áðan þið sjáið til dæmis hérna í línu sex hvað munduð þið gera við þennan einstakling? Hann er með voða fáar upplýsingar. Myndum við fylla inn gildin hans eða myndum við gera eitthvað annað við hann? Eyða honum, er það ekki? Hann svaraði voðalega fáu. En hvað með hérna í í hérna hvað eigum við að segja? Í marital status? Hvað mundum við segja einstaklingur eitt sé út frá þessu? Hvað er líklegast að hann sé? [UNK] Single? Af hverju? Ef við horfum bara á þennan eina dálk þá sjáum við það að single kemur oftast fyrir þannig að það er líklegast að hann sé single. En svo náttlega getum við alveg flokkað þetta og séð miðað við aldur hvað er algengast að vera og þá tekið aldurinn hans til greina þegar við ákveðum hvað hann á að vera, en svona naive aðferðin mundi segja að að hann væri að hann væri single held ég. Ókei, og svo eins hérna með þennan dálk credit bureau score. Þið sjáið það eru bara þrír sem eru með eitthvað þar. Þannig að ef við ætlum að fara að fylla inn hérna með því að nota meðaltalið eða eitthvað, þá sjáum við það að allir þessir einstaklingar mundu hafa sama gildi sem þýðir það að þessi dálkur myndi ekki vera neitt voðalega hérna voðalega góður hann mundi ekki vera neitt voðalega representative þannig að þetta kannski bara dálkur sem væri ágætt, ágætt að eyða alveg út. Ókei, þannig að þegar við erum að replace-a þessi þessi hérna gildi sem vantar. Þá höfum við nokkrar nokkrar hérna leiðir. Þegar við erum með sem sagt samfelldar breytur þá er mjög algengt að setja inn annaðhvort meðaltalið eða miðgildið það er betra að nota miðgildi ef maður er með mikið af sem sagt outlier-um. En en það er bara svona já maður metur það bara svona fyrir hvert dæmi hvað maður hvað maður vill nota eða ef maður er með sem sagt, æi fyrirgefðu. Þannig að það var það sem við mundum gera hérna með með income-ið til dæmis mundu þið setja þar inn annaðhvort miðgildið eða meðaltalið. Af því að það er samfelld breyta. En svo erum við með categorical breytur og þá mundum við bara setja inn, eins og við gerðum hérna áðan, algengasta gildið. Einhverjar spurningar? Nei. Ókei, svo erum við, fyrirgefðu. Svo erum við outlier-a og það eru sem sagt svona mælingar sem eru, já, mjög fjarlægar hinum mælingunum er einhvers konar einhvern hátt öðruvísi og og hérna stundum þá náttlega erum við að reyna að finna svoleiðis hérna mælingar þar er kannski markmiðið okkar eins og til dæmis í svindli þegar við töluðum um þarna seinast að við viljum finna þessar mælingar sem eru extreme og öðruvísi en oft þá valda þessar mælingar bara skekkju í módelunum okkar. Og þess vegna viljum við finna þær og gera eitthvað við þær. Við viljum einhvern veginn henda þeim út eða laga þær til eða eitthvað og og hérna dæmi um sem sagt útlaga er til dæmis mælingar sem eru alveg alveg réttar, eins og til dæmis í fyrirtæki þar sem allir eru bara forritarar og eru með hérna hvað fimm hundruð þúsund á mánuði, segjum að við séum með tíu þannig og svo um einn hérna einn sem sagt yfir mann sem er með eina og hálfa milljón þá er hann miðað við alla þessa forritara hann er náttúrlega útlagi af því að hann er með miklu, miklu hærri laun. En þetta er samt alveg mæling sem að er í lagi. Hún er ekkert, hún er ekki ólögleg, hún bara bara er svona af því að hann er með hærri laun heldur en allir hinir. Og þá hérna sem sagt getur maður dílað við það einhvern veginn eða maður getur verið með mælingar sem eru bara ómögulegar eins og til dæmis negatífan aldur eða of háan aldur eða neikvæða þyngd eða þú veist einhver maður er sex metrar á hæð, eitthvað svoleiðis, það mundi vera sem sagt invalid mæling. En til þess að sjá þessa útlaga þá er oft gott að nota sem sagt myndræna framsetningu, annars vegar með einni breytu og hins vegar með fleiri en einum breytum eins og ég ætla að sýna ykkur hérna á næstu glæru. En en fyrst kannski með útlaganna að alveg eins og með gögnin sem vantar þá getur maður annaðhvort sem sagt eytt þeim út eða dílað einhvern veginn við það, bara fer eftir því hérna í hvert skipti hvað hentar best maður þarf bara að meta það í hvert sinn. En hérna sjáum við hvernig við getum reynt að finna útlaga. Hérna erum við með í sem sagt multivariate setting þar sem við erum með tvær breytur annars vegar innkomu og hins vegar aldur og þið sjáið til dæmis hérna að sem sagt það er einhver hérna sem er hvað sextíu og fjögurra ára og hann er með fjögur hundruð þúsund. Þetta gæti verið litið á sem útlagi og eins þarna þessi efsti sem er með hvað tuttugu og tveggja og hvað er þetta fjórar milljónir? Það gæti hérna verið kannski eitthvað óeðlilegt þar í gangi. En þessir útlagar hér maður hefði aldrei séð þá ef maður hefði bara skoðað innkomuna eða bara skoðað aldurinn. Af því að aldurinn er ekkert óeðlilegur og innkoman er ekkert óeðlileg. En saman þetta kannski óeðlilegt, þannig að í þessu tilfelli þá þurftum við að skoða þessar tvær breytur saman til þess að taka eftir þessum útlögum og svo hérna hins vegar til þess að finna þessa univariate útlaga bara með einni breytu, aldri hérna. Þá getum við gert svona histogram til dæmis og þá sjáum við að einn hérna á bilinu núll til fimm á meðan að næsti er er tuttugu þannig að þessi hérna er örugglega eitthvað skrítinn og þessi hérna er definately eitthvað skrítinn í dag, því enginn er hundrað og fimmtíu ára. Þá getum við hérna reynt að bara sjá í gögnunum hvað veldur þessu ákveðið og ákveðið hvort við eigum að taka þetta í burtu eða eða að díla þá díla við þá. Og eins og ég sagði til að díla við þá þá getum við, sem sagt ef við erum með útlaga sem eru ólöglegir þá lítum við þá eins og missing values og ákveðum hvort við ætlum að hafa þá með delete-a þeim eða replace-a og svo hins vegar, ef við erum með löglega útlaga þá notar maður eitthvað sem heitir truncation og þá erum við með nokkrar mismunandi aðferðir, sem sagt við erum truncation með héna z-score-um og með IQR og svo getur maður notað meira advanced aðferðir líka en ég ætla að tala um tvær af þessum aðferðum, annars vegar með z-score-um sem við töluðum um seinasta föstudag sem okkur til um það hversu mörg staðalfrávik mælingin er frá meðaltalinu. Þannig að ef þið ímyndið ykkur að einhver einhver mæling sé mjög mörgum staðalfrávikum frá meðaltalinu, þá er hún útlagi, af því hún er svo langt frá norminu. Þannig að það sem við gerum einfaldlega er að við reiknum z-score-in fyrir allar breyturnar í dálkinum og ef z-score-ið er minna en mínus þrír eða stærra en þrír það er bara svona þumalputtaregla, þá tökum við breytuna og bara færum hana inn að þessum mörkum. Já, þannig að maður býr til svona efri og neðri mörk sem allt þarf að vera inn fyrir og þetta er í notebook-inu líka sem ég ætla að fara í gegnum og svo erum við með outlier detection með hérna IQR eða interquartile range sem byggir á svona, svona boxplottum. Svona boxplott eru gjarnan notuð til þess að skoða dreifingu gagna. Þannig við reiknum fimm gildi út úr gögnunum okkar. Við erum með miðgildið, við erum með fyrsta og þriðja quartile, minimum og maxinum, maximum og þá getum við teiknað upp þessa hérna mynd þannig að þessi lína hér er miðgildið sem sagt fyrir neðan þetta er helmingurinn af gögnunum og fyrir ofan það er hinn helmingurinn. Þessi lína hér er Q einn, er sem sagt fyrsta quartile þannig að fyrir neðan það eru tuttugu og fimm prósent, og hinn sama hátt þá er þessi hérna lína Q þrír, þannig að fyrir ofan það er tuttugu og fimm prósent og svo er þetta bil hérna sem heitir interquartile range og svo teiknum við hérna þessar línur sem eru raunverulega einn og hálfur sinnum þetta IQR og þá erum við komin með þessi mörk og svo sjáum við það að þarna eru nokkrir punktar sem lenda fyrir utan mörkin. Of þá eru þeir útlagar og við dílum við þá á sama hátt og við gerðum í z-score-unum sem sagt ef eitthvað er fyrir neðan Q einn mínus einn og hálfur sinnum IQR þá er það útlagi og við færum hann inn fyrir. Og eins ef við erum fyrir ofan Q þrír plús einn komma eitt og hálft interquartile range þá færum við það inn fyrir mörkin. Ókei, og svo stundum þurfum við oft þurfum við að staðla gögnin okkar. Af því að margir af þessum algoritmum sem við notum þeir hérna er ekkert voðalega glaðir þegar gögnin eru á mismunandi skölum þetta á sérstaklega við um hérna support vector machines. Þær vilja að öll gögn séu á sama skala. Eins neural networks þau vilja líka að maður sé á sama skala þannig að þetta er bara ágætis venja að að sem sagt skala gögnin. Og þetta sem sagt snýst um það að færa öll gögnin yfir á sama skalan inn á sama range-ið. Þannig að til dæmis ef að við erum með, já, skóstærð sem er á bilinu þrjátíu og fimm til fjörutíu og sex til dæmis og svo erum við með hæð í sentimetrum, hún er á bilinu einn og fimmtíu og tveir og tíu segjum sem svo, þá eru þetta mjög mismunandi skalar en ef við skölum þetta þá fer það bæði inn á sama bilið. Og og hérna og hérna til dæmis líka innkoma á móti aldri þar ertu líka með mjög mismunandi skala kannski ertu með mörg hundruð þúsund í laun, en þú ert bara á bilinu tuttugu og þriggja til sextíu og fimm. Þannig að hérna þar þarf maður líka að skala. Og þá erum við með hérna tvo option-a það sem heitir min max scaling, þar sem að þú einfaldlega tekur hverja mælingu, dregur frá minnstu mælinguna í þeim dálki svo deilirðu með hérna mismuninum á stærsta og minnsta gildinu og þetta gerir það að verkum að breytan hún verður á bilinu núll og upp í einn það til dæmis þegar þú ert með með hérna laun þarna, þá í staðinn fyrir að vera á bilinu hundrað þúsund upp í eina milljón, þá ertu búinn að færa það þannig að það sé allt saman á bilinu núll upp í einn. Og hin aðferðin er að nota sem sagt z-score þar sem við bara stöðlum allar breyturnar í dálkinum. Ókei, og svo erum við með eitthvað sem er nauðsynlegt stundum líka það er að sem sagt transforma gögnin. Stundum þá líta lítur dreifing einhverrar breytu svona út. En algoritmarnir þeir díla miklu betur við eitthvað sem er svona normaldreift þannig að til þess að breyta þessu í þetta þá bara tökum við logran af þessu hér. Og þá sem sagt fáum við log normal dreifingunna, og þá lítur þetta svona meira út eins og normaldreifingin sem að hérna er oft betra að vinna með. Þannig að þið getið ímyndað ykkur það að hérna hafa lág gildi miklu meira vægi heldur en há gildi en hérna ekki. Það er svona pælingin. Ókei, hvernig lesum við inn gögn og út úr Python? Við erum með mismunandi köll til þess ef þið eruð með comma seperated values þá getið þið notað read csv og to csv, sem sagt fyrst að lesa inn gögnin, þetta seinna skilar þeim aftur út. Þetta er svona algengast að nota ef þið eruð að vinna með excel skjöl þá getið þið notað notað read excel eða to excel í staðinn. Þá, það er náttúrlega voðalega oft sem maður er með excel skjöl af því að fólk er svo mikið að vinna í excel. Og þá getur maður þetta þá bara að lesa þeir inn gögnin og allt lítur mjög fallega út. Svo getum við lesið inn JSON fæla ef að gögnin okkar eru sett upp á þann hátt og þá kemur þetta hérna voðalega fallega í í hérna í pandas, nei, fyrirgefðu, í JSON. Og eins HTML ef þið eruð með sem sagt HTML streng þá getið þið bara lesið hana beint og gögnin bara koma inn í Python eins og þau eru sem sagt á þessu svæði á þessu URL-i og svo eru þið með nokkra aðra eiginleika líka. Við erum með sem sagt HDF, við erum með SQL, við erum með SAS. Python og pandas ræður við þetta allt saman og kannski að lokum að hérna pickle það er sem sagt það sem er sem sagt raunverulega python format. Þannig að það er mjög gott að nota það þegar maður er að vinna bara í Python, það sem sagt hérna er mest compatible segjum sem svo. En alla vegana hérna ég ætla að leyfa ykkur að skoða þetta sjálf, eigum við ekki að taka fimm mínútur í pásu, og svo förum við í notebook-ið.


Hreinsun gagna

Ókei, sem sagt í dag, þá ætlum við að tala um, hérna, það sem kallast data cleaning eða hreinsa gögnin sem er, hérna, mjög mikilvægt skref áður en maður byrjar að að vinna með þau og, og hérna yfirleitt það skref sem tekur hvað lengstan tíma af því að maður þarf rosalega oft að fara aftur og hreinsa meira þegar maður byrjar að vinna með gögnin. Maður áttar sig á því að kannski er ekki alveg allt eins og það á að vera og þá þarf maður fara til baka og, og, og, hreinsa betur og það er sem sagt talað um það að þetta skref taki alveg áttatíu prósent af tímanum í þessum analytics process sem sagt frá því að maður er með gögn þangað til að maður er kominn með einhvers konar módel. þá er þetta það að hreinsa gögnin og koma þeim svona á þetta form sem að er hentugt það sem er lang sem sagt tímafrekast en en áður en við förum í það þá ætla ég aðeins að hérna tala við ykkur um dagskrána hjá okkur vegna þess að gestafyrirlesarinn okkar hann þurfti að færa til hann átti að vera hérna sjöunda febrúar. En af því að hann ætlar að fara á UTmessuna þá ákváðum við að færa hans fyrirlestur, hérna, til tíunda febrúar á mánudag og, hérna, vegna þess að UTmessan er náttúrulega svona, hérna, ráðstefna þar sem er verið að ræða tækni sem er að gerast á Íslandi, þá ætlum við að hérna hafa engan fyrirlestur þennan dag þannig að þið öll getið farið á UTmessuna líka og hlustað á fyrirlestra þar og mér skilst að séu sem sagt einhverjir afsláttar og svoleiðis fyrir nemendur, þannig að ef þið hafið áhuga á því endilega kíkið á það. Það verður mjög mikið af skemmtilegum fyrirlestrum sem sagt kynntir þarna á þessari ráðstefnu og vegna þess að við þurftum aðeins að breyta til í dagskránni þá hérna á mánudaginn þá ætla ég að gefa ykkur val um það hvort þið viljið að ég tali um model evaluation um það hvernig maður metur það, hversu góð módelin manns eru eða hvort ég eigi að tala um tengslanet, social network analytics, hérna, þar sem við erum að raunverulega að nota þessar analytics aðferðir, en á tengslanetum og, og, hérna, það er til dæmis gert, hérna, já, náttúrulega á öllum þessum tengslanetum sem við erum öll náttúrulega hluti af Facebook, Twitter bara þú veist vinanetinu okkar allt mögulegt. Þannig að þetta átti að vera tveir fyrirlestrar. En út af þessu hérna endurskipulagi þá hérna þurfum við að velja annaðhvort þannig að hverjir myndu vilja model evaluation? Réttu upp hönd. Ókei, og social networks? Ókei. Þá verður það model evaluation. Ekki málið þá verðum við að tala um accuracy og AUC og svona ýmislegt skemmtilegt. Ókei, þá er það komið. Og svo ætla ég aðeins að tala um sem sagt námsmatið í námskeiðinu. Eins og þið vitið. Þá er sem sagt námsmatið byggt á kynningum sem þið eruð með um svona machine learning algóritma annars vegar og svo eru þessi lokaverkefni hins vegar og á Canvas er búið að búa til sem sagt assignments fyrir þetta bæði þið getið farið og tékkað á þeim sem sagt þar er nákvæm lýsing á hvers er ætlast til af ykkur í báðum þessum hlutum á námskeiðinu. Fyrir kynningarnar þá erum við búin að sem sagt raða ykkur í hópa, þrír til fjórir nemendur í hverjum hóp. en út af sem sagt við erum einn hóp sem er á Akureyri og sá hópur hérna sem sagt mun hugsanlega koma sem sagt suður og kynna sitt verkefni og þess vegna erum við ennþá að negla niður dagsetningar fyrir kynningarnar fyrir hvern hóp upp á það sem sagt hvenær hópurinn á Akureyri gæti mögulega komið suður. Þannig að það er ennþá verið að vinna í þessum dagsetningum fyrir það hvenær hvaða hópur verður með fyrirlestur. En við erum búin að sem sagt setja inn dagsetningar fyrir fyrstu tvo hópana. Það er sem sagt þá annars vegar eins og þið sjáið hér fjórtánda febrúar decision trees og random forests og svo sautjánda febrúar hérna þar sem erum að tala um regression og hóparnir sem eiga að sjá um þessa fyrirlestra. Þeir eru þegar, þegar búið að assign-a þá þannig ef þið farið inn í, inn í hérna groups sem sagt ef við förum, við förum, úps klúðraði ég einhverju? Nei. Ef við förum sem sagt hingað þá hérna sjáið þið í fyrsta lagi að það komið hérna assignment: final project, fresturinn tuttugasta og fimmta mars og svo class presentation það er undated af því þið eruð öll með mismunandi dagsetningu og svo ef þið farið hérna í people og í groups þá sjáið þið sem sagt hérna class presentation. Þetta eru sem sagt kynningarnar, ykkar kynningar í tíma þar sem þið kynnið mismunandi topic og þá sjáið þið hérna strax á fjórtánda febrúar, class presentation. Ef við expöndum það þá sjáið þið hvaða nemendur eru ábyrgir fyrir því og svo eins fyrir regression sautjánda febrúar þá eru það þessir nemendur sem eru ábyrgir fyrir því og svo restina af þessum efnum munu vera að assign-uð bara vonandi í næstu viku, þannig að þið hafið öll á hreinu hérna hvenær þið eigið að vera að kynna. En svo er annar hluti af þessu þar nemendur sem sagt fyrirlestrum ykkar, að er ekki bara nemendur sem eiga að kynna verkefni eða, þú veist, kynna algóritma, heldur eru aðrir nemendur í salnum sem eiga að spyrja spurninga. Þannig að þeir þurfa að vera rauninni heima fyrir tímann að kynna sér efnið og spyrja þá sem eru að kynna spurninga og, og hérna það eru sem sagt gefnar einkunnir fyrir það að spyrja sem sagt þessi þátttaka í tímum, það er gefin einkunn fyrir það og á sama hátt þá er sem sagt er ykkur assign-að ákveðið topic til að spyrja spurninga um og þið sjáið það hérna alveg, nei bíddu nú við, já hérna. Hérna sem sagt hérna sjáið þið, getið þið séð hvenær þið eigið að spyrja spurninga, þannig að til dæmis hérna fjórtánda febrúar þá eiga þessir nemendur að spyrja spurninga þannig að þeir þurfa að fyrir þennan tíma líka að kynna sér decision trees og random forests og vera tilbúnir með spurninga eða komment eða eitthvað og eitthvað sem er ekki alveg trivial. Eitthvað sem er svona kannski þarf aðeins að pæla í. Og hérna er búið að assign-a fyrir allt saman. Þannig að vinsamlegast hérna kíkið á þetta til að vera viss um það hvenær þið eru ábyrg fyrir annað hvort því að halda fyrirlestur eða að spyrja spurninga. Þetta voru sem sagt kynningarnar. Og svo erum við með, hvar ertu, þarna ertu. Þetta voru kynningarnar og þessi deadlines eru sem sagt per schedule eins og þið sjáið í syllabus-num svo þurfið þið að spyrja spurninga og svo erum við með final project-ið þar sem að þið eigið að velja efni og velja ykkur hópa. Það eru tveir til þrír í hóp. Og þið þurfið að láta okkur vita á föstudaginn næsta hvaða topic og hvaða hóp þið eruð með. Og þið getið sem sagt bara raðað í hópa innan canvass, og endilega sendið okkur e-mail með ykkar topic-i hvað þið ætlið að fjalla um í ykkar verkefni. Og þessu þarf að skila inn tuttugasta og fimmta mars, og svo tuttugasta og sjöunda mars og þrítugasta mars. Þá verðum við með kynningar í tíma þar sem þið kynnið fyrir öllum ykkar verkefni og þá erum við að tala um svona korter, tuttugu mínútur þar sem ég get bara farið í gegnum notebook-ið sem að þið bjugguð til sem ykkar skil og ég ítreka það að sem sagt check-iði á Canvas í hvaða hópum þið eruð fyrir hérna sem sagt class presentation-ið og líka fyrir spurningarnar og aðeins nánar um kynningarnar, að þið þurfið að láta okkur fá sem sagt ykkar kynningu, þremur virkum dögum fyrir kynninguna, þannig að við getum farið í gegnum það og gefið ykkur, feedback og svoleiðis. Þá sem sagt sendið það bæði á, á mig og Magnús og svo er sem sagt gefið sem sagt fyrir þessa fjóra hluta hversu vel þið þekkið efnið, hversu vel þið kynnið efnið og hversu góð dæmi þið gefið og hversu góð verkefni þið búið til því þið eigið líka að búa til dæmi sem að hinir nemendarnir eiga að leysa á dæmatímablöðum. Þannig þið eigið að búa til dæmi þar sem er verið að nota random forest til dæmis. Svo mun það koma inn á dæmatíma verkefnið sem allir eiga að skila. Þannig að það er ekki nóg bara með því að kynna fyrir hinum hérna eitthvað, eitthvað topic þið eigið líka að búa til verkefni sem hinir eiga að leysa þannig að allir geti lært. Og svo þessir sem eru að spyrja spurninga bara svona smá hérna já, punktar fyrir þá. Eins og stendur hérna að við erum að leita eftir því að þið sýnið að þið þekkið efnið og þið getið gert það á einn af þessum fjóra vegu sem stendur hér sem sagt að leiðrétta eitthvað sem var sagt vitlaust í kynningunni, til dæmis að að útskýra eitthvað sem var minnst á í kynningunni, benda á og tala um einhvern ákveðinn hluta sem var ekki talað um í kynningunni, eitthvað svona aukalega til dæmis og hvernig er hægt að nota þessa aðferð í raunveruleikanum eða hvernig hún er notuð í raunveruleikanum og og hérna og svo kannski einhver svona sniðug aðferð sem hægt er að nota þegar maður er að vinna með þessa aðferð í Python. Til dæmis ef maður er að tune-a einhverja parametra eða eitthvað, þið komið eitthvað sniðugt insight í það hvernig gott er að tune-a parametra fyrir random forests, eitthvað svoleiðis, eða þú veist eitthvað sem maður þarf að passa sig á þegar maður er að búa til decision tree, hvað þú veist er það sem getur farið úrskeiðis þar til dæmis þannig að þetta er svona ýmislegt sem maður getur haft í huga þegar maður er að er að finna góðar spurningar og svo að lokum fyrir lokaverkefnið þannig þið vinnið í hópum tvö til þrjú að einhverri ákveðinni topic-i sem þið veljið sjálf. Þá er þetta hérna hvernig við munum gefa fyrir það, það er sem sagt cleaning and wrangling hvernig þið hreinsið upp gagnasafnið ykkar, og sem sagt skilningur og notkun á þessum predictive techniques þessum machine learning aðferðum sem við erum að fara að tala um næstu vikur, hversu vel skiljið þið þær og hversu vel notið þið þær eruð þið að nota rétta aðferð fyrir ykkar gagnasafn og eruð þið að túlka niðurstöðurnar rétt. Og svo snýst þetta um að maður sé sem sagt að segja einhverja sögu í þessu í þessu hérna notebook-i sem þið skilið inn og er sagan sem þið segið meikar hún eitthvað sense? Og svo sem sagt hvort þið séuð að nota myndræna framsetningu á réttan og og hérna réttan hátt og á þann hátt að það sem sagt bæti framsetninguna eruð þið er ykkar, myndræna framsetning að að enhance-a allt allt verkefnið þannig að hafið þetta í huga líka þegar þið vinnið að lokaverkefninu. Og ég bara vill hérna minna ykkur á það að byrja fyrr en síðar að þetta mun taka meiri tíma heldur en heldur en þið haldið. Ókei, eru einhverjar spurningar varðandi kynningar eða verkefni eða skil? Er þetta allt saman ljóst? Ókei. Og allir eru með á hreinu hvenær þeir eiga að spyrja spurninga? Og þeir sem eru með fyrstu tvær kynningarnar eru með það á hreinu? Ókei. Heyrðu, ok þá ætlum við að fara að tala um það að að sem sagt hreinsa gögn og hvað snýst það um? Já, það er sem sagt minnst hérna á á fjóra mismunandi þætti sem sem hérna maður á að hugsa um þegar maður er að hreinsa gögn. Í fyrsta lagi að sem sagt já, laga raunverulega format-ið og og samræma format á mismunandi gögnum af því þegar það er verið að save-a gögn og færa þau á milli mismunandi staða þá gerist það oft að það verða svona hérna inconsistencies eins og til dæmis með tíma eitthvað sem er að er að hérna vinna með gögn í þú veist Asíu og á Íslandi þá eru náttúrulega mismunandi tíma zone, þannig að kannski að að hérna samræma tímann þar með að þú veist draga einhverja klukkutíma af eða eitthvað eða hérna til dæmis líka bara með með svona fjárhæðir. Fólk sem er að vinna í Bandaríkjunum, fólk sem er að vinna í Evrópu er náttúrlega er að nota mismunandi hérna gjaldmiðla, dollar-a og evrur þannig að það þarf að samræma það líka þannig það er svona það sem við tölum um að um að samræma þessi þessi formöt, og svo það sem gerist líka mjög gjarnan, að það eru gögn sem vantar það getur verið margar ástæður fyrir því af hverju gögnin vantar. En við þurfum að gera eitthvað við það. Það gæti bara hreinlega gerst þegar við erum að sameina mismunandi gögn úr mörgum töflum og það verða til auðir, auðir reitir eða að það bara vantar hreinlega mælingar fyrir ákveðnar ákveðnar observation-ir þannig að hérna maður þarf að pæla aðeins í því hvernig er best að fylla inn þessi þessi hérna göt í gögnunum og svo sem sagt getur líka gerst náttúrlega að að það eru röng gögn í töflunni að að hérna kannski er einhver sem er skráður með aldurinn mínus hundrað eða einhver sem er skráður með aldurinn hérna fimm þúsund. Og það er náttúrulega eitthvað sem er bara getur ekki verið auðvitað og það getur þá verið vegna þess að einhver sem var að slá inn þessar tölur hann bara gerði það vitlaust og þess vegna verður til svona hérna villa í gögnunum og og þá þarf að þarf að laga það og svo líka hérna sem er mjög algengt vandamál það er það sem heitir að standardizing categories, til dæmis þegar að fólk er að skrá inn lönd Bandaríkin, þá geturðu skrá það inn sem u s a eða U punktur S punktur A punktur eða U S eða United States eða United States of America. Allt er þetta nákvæmlega það sama en skrifað á mismunandi hátt og ef þú ætlar að bara taka þennan dálk með þessum löndum og nota sem sem sagt faktor í þinni greiningu þá muntu mun allt þetta flokkast sem mismunandi flokkur, þó það sé raunverulega sami flokkurinn. Og þess vegna þarf að fara í gegnum þennan flokk og og sem sagt sjá til þess að þetta sé allt táknað á sama hátt, þannig að þetta valdi ekki neinum neinum hérna misskilningi þegar maður byrjar að vinna úr gögnunum, þannig að það þarf að fara í gegn og passa sig á því að allt sem er einhver týpa af þessu er það sama. Já, þetta getur gerst til dæmis með kyn og og ýmislegt annað. Ókei, og svo sem sagt þegar maður er búinn að pæla í þessum hlutum þá þarf maður líka að pæla í því hvernig taflan manns lítur út og það snýst þá um að svona færa til gögnin þannig að þau séu já á hentugu formi fyrir analísuna og það sem sagt snýst um það kannski að vera með svona víða töflu og gera hana svona að langri töflu með því að taka dálka og búa til raðir og ýmislegt en ég ætla að sýna ykkur hérna smá myndband. Ókei, hvað hérna hvað sáum við? Hvað var þetta? [UNK] Þetta er sem sagt tól sem að hérna er fyrir fólk kannski sem er ekkert voðalega gott í því að forrita eða í að nota Python þannig að þú ert með þetta svona alltaf svona visual hérna platform-i þar sem þú gast tekið raunverulega hérna einhverja töflu og komið henni á svona format sem hentar vel fyrir áframhaldandi analísu af því að gögn er best að vinna með á einhvers konar svona form. Þar sem þú ert með sem sagt observations, í raun og veru öll sem sagt gildin sem eru mæld sem sagt í sama hérna unit-i og variables sem eru sem sagt eða breytur, sem eru þá sem sagt þessir eiginleikar sem við erum að að mæla og það er á þessu formi sem við viljum yfirleitt vera að vinna með gögn sem hann var að gera í þessu tóli var að taka þessi gögn sem voru svona frekar unstrúkteruð og og kannski erfitt að vinna með og koma þeim á einhvers konar svona form þar sem þú ert með sem sagt observations og variables eða eða features og það er oft talað um sem sagt tvennskonar data formöt, annars vegar long og hins vegar wide data formöt þar sem að svona löng gögn eru með hérna sem sagt eina observation og eina measurement í hverri röð. Þar sem þetta verður þá það svona hérna Já, langt niður og það er mjög gott þegar maður er að plotta einhvers konar summary og svona alls konar að svo ertu líka með eitthvað sem heitir wide data format, þar sem að hver hérna mæling fyrir hverja observation er í sem sagt er í einstakri röð og það er yfirleitt format-ið sem við erum að vinna með gögn sérstaklega í svona predictive modeling að þá ertu með allar sem sagt observation-irnar þínar og gildið fyrir hvern fyrir hverja hverja breytu fyrir sig og ef við skoðum þetta myndrænt. Þá mundi þetta vera sem sagt langt data format það sem við erum með þið sjáið Afganistan kemur oft fyrir og svo ertu með hérna árin í næsta dálki og svo ertu með hérna key og svo ertu með gildið í lokin þannig að þetta er svona gott þegar þú ert að summerize-a gögn af því að þú ert með breyturnar raunverulega svona niður og og hérna en en observations-in þau svona eru ná yfir kannski margar línur meðan á móti þegar þú ert með svona breytt format þá ertu með mælingarnar í hverri röð. Þannig að nú sjáum við til dæmis að að hérna Afganistan er bara í tveimur röðum meðan að hérna þá varð það alveg í fjórum röðum og það er vegna þess að raunverulega sem við viljum vera að mæla hér er þetta er þetta value og við viljum hafa öll value-in í sér dálki. Og við erum með sem sagt eitt value fyrir cases og eitt value fyrir population, þannig að með því að búa til dálk sem heitir cases og dálk sem heitir population þá fáum við þetta á svona breiðara format þar sem að mældu gildin eru sem sagt í hverri röð. Þannig að til þess að ná þessu, þessum já þessum gullna standard að vera eitthvað sem heitir hrein gögn þá þurfum við sem sagt að hafa þetta svona, að sérhver breyta er í dálk og inniheldur gildi og sérhver hérna observation myndar röð og hver sem sagt hvert unit myndar gögn og þetta er það sem kallast gagnasafnsfræðinni þriðja normal form, þannig að ef þið munið eftir því úr gagnasafnsfræði þá er þetta það sem heitir þetta þriðja normal form. Og það er sem sagt þessi þessi hérna status sem við viljum oft ná út frá gögnunum okkar. Þannig að ef við erum með þetta gagnasafn hér þá erum við sem samt með einhvers konar treatment a og b og einhverja hérna einstaklinga sem eru að fá þetta treatment. Og þetta er dæmi um gagnasafn sem er ekki á góðu format-i af því að við getum ekki gert greinarmun á treatment-unum þannig að ef við umbreytum því og gerum það svona þá er það orðið betra af því að við getum flokkað eftir treatment og til dæmis reiknað meðaltal allra sem fengu treatment b og meðaltal allra sem fengu treatment a á miklu auðveldari hátt heldur en í töflu hérna í efri töflunni og nota bene, þetta náttúrulega er bara einföld dæmi um leið og þú ert kominn með tíu þúsund, hundrað þúsund raðir þá náttúrlega er ekkert voðalega auðvelt að sjá skiljið þið, já, þetta er bara svona. Þú veist, af því þetta er svo lítið en um leið og við komum einhvern fjölda af af mælingum þá náttúrlega verður þetta allt mjög óyfirstíganlegt að ætla bara að horfa á þetta. Þannig að er mjög gott að að kunna að sem sagt að hérna umbreyta gögnunum. Ókei, og hvernig ætlum við svo að hreinsa þessi gögn? Nokkur dæmi í þessu í þeirri töflu þá sjáum við erum með sem sagt einhvers konar þetta eru trúarbrögð og svo er þetta hérna innkoma miðað við trúarbrögð þannig að við sjáum það að tuttugu og sjö agnostic people eru með hérna minna en tíu þúsund dollara í laun. Og ef við horfum á þessa töflu þá sjáum við að í dálkunum er eru upplýsingar í dálkaheitunum þarna efst eru upplýsingar sem við kannski myndum vilja geta notað. Og þetta er eitt dæmi um um sem sagt tilfelli þar sem að gögnin eru ekki hrein af því þegar þau eru svona þá getum við ekki notað upplýsingarnar sem er í dálka heitunum þannig að við þurfum að við þurfum að sem sagt laga það. Og það er gert með því að ég geri eitthvað sem heitir unpivot eða eða melt, þar sem við tökum raunverulega dálkaheitin og búum til eigin dálk úr þeim og svo fáum við í þriðja dálkinn hérna sem sagt fjöldann. Þannig að ef þið horfið á þetta þá erum við með hérna, agnostic minna en tíu þúsund tuttugu og sjö. Og það er það sem var í efsta reitnum þarna þannig að við erum búin að svona umbreyta töflunni þannig að hún er það er auðveldara að skilja hana, við erum búin að taka hana, hún var sem sagt wide og við erum búnir að gera hana langa. Og þetta getum við gert með því að nota fall í í hérna pandas sem heitir melt það sem að þið sjáið sem sagt kóðann hér að við erum með hérna töfluna okkar og við köllum þetta melt og hérna við viljum sem sagt að religion haldi sér, trúin á að vera kjur þarna en við viljum við viljum hérna taka við viljum taka þennan hérna næsta dálk, annan dálkinn sem að var, nei fyrirgefðu. Við viljum taka, sko já. Sem sagt við erum með religion á að halda sér, allir hinir dálkarnir eiga að breytast og verða að einum dálki. Og sá dálkur á að heita income og og hérna það sem á að koma inn í röðina fyrir þetta income á að heita frequency þannig að eftir að við erum búin að kalla á þetta falla þá mun það líta svona og við sjáum þetta í Python notebook-inu á eftir hvernig þetta virkar nákvæmlega. En ókei og hér er annað dæmi þar sem við erum með gögn sem eru með vandræði að við erum með sem sagt margskonar einingar í sem sagt einni einni töflu, þannig að hérna erum við með sem sagt einhver lög sem voru á einhverjum hérna sem sagt topplista í í hérna einhverjum svona billboard lista og hérna erum við bæði með sem sagt já tvær sem sagt einingar í einni töflu og það er yfirleitt dálítið slæmt að hafa það þannig að við viljum búa til tvær töflur úr þessari einu þar sem önnur heldur utan um lögin og hin heldur utan um rank-in á þessum lögum. Ókei, og svo erum við hérna dæmi um það að við erum með margar breytur geymdar í einum dálk, þannig að þetta gagnasafn hér það segir til um það hvað voru mikið af tilfellum um berkla í einhverju ákveðnu landi eftir sem sagt aldri og kyni og þannig að þið sjáið hérna ef þið horfið á þetta við erum með, ókei. Hérna eru löndin og hérna er árið en svo erum við bara með einhverjar tölur. Og ef þið horfið á dálkaheitin hérna vitið þið hvað þeir standa fyrir M-ið hérna er male, núll þýðir frá núll til fjórtán þannig að þetta er hérna í landinu a d árið tvö þúsund var enginn karlmaður á aldrinum núll til fjórtán ára með berkla og svo framvegis, þannig að þið sjáið að það er rosalega miklar upplýsingar geymdar í hérna dálkaheitunum sem þýðir það eins og áðan að við getum raunverulega ekki unnið með upplýsingarnar sem eru í þessum dálkaheitum og þetta er sem sagt annað dæmi um það þar sem við viljum breyta töflunni og svo er annað að við erum með sem sagt hérna NaN sem sagt ekki neitt svo erum við líka með núll þannig að það er líka misræmi á milli þess hvernig það að mælingar vanti sé táknað þannig að til þess að breyta þessu þá á sama hátt notum við aftur þetta melt fall með því að melt-a saman kyni og aldri inn í hérna mismunandi dálka og þannig við fáum sem sagt þrjá nýja dálka úr þessum sem við melt-uðum, sem að voru þá sem sagt kyn, neðra sem sagt neðri mörkin á aldursbilinu og svo efri mörkin á aldursbilinu og eins á eftir þá mun fara í gegnum Python notebook-ið hvernig þetta er gert. Ókei. Og hérna er annað dæmi einhver sem var að mæla hvað er þetta hitastig? í Mexíkó. Og, og, hérna, ókei, ef þið horfið á þessa töflu hvað er svona það fyrsta sem þið takið eftir? Hvað stingur svolítið í augun hér. [UNK] Það er svolítið mikið af tómu, nákvæmlega. Þannig að þetta er kannski ekki ideal format fyrir þessi gögn, enda sjáum við að við erum með sem sagt þetta er sem sagt mælitæki og svo erum við með árið hérna svo erum við með mánuðinn og bara númerið á mánuðinum, þetta er engin dagsetning heldur bara hérna mánuður eitt. Og svo erum við með sem sagt max hitan og min hitan og já og svo er sem sagt hérna dálkarnir þeir tákna dagana þannig að við getum séð hérna tvö þúsund og tíu í febrúar, annan febrúar, þá var minnsta hitastig í fjórtán komma fjórar mesta hitastigið í tuttugu og sjö komma þrír. En en þetta er náttúrulega kannski ekki alveg besta í heimi. Þannig að hérna er annað sem við viljum hérna laga, í þessu tilfelli þá erum við með breytur sem eru geymdar bæði í röðum og dálkum. En þegar við erum búin að hreinsa þetta upp þá lítur þetta svolítið betur út þá erum við með mælitækið við erum með dagsetninguna sem heila dagsetningu og svo erum við með max hitann og min hitann svo þetta lítur svolítið betur út. Ókei, og svo er annað dæmi hérna þar sem við verðum með algengustu barna nöfn í Illinois, annars vegar árið tvö þúsund og fjórtán og hins vegar árið tvö þúsund og fimmtán og þessi gögn eru geymd í tveimur mismunandi fælum og eina leiðin til að vita hvort árið við erum að tala um er sem sagt í heitinu á skránni. Við segjum: Ókei, hérna Alexander hann var með frequency-ið sjö hundruð og þrír en þá þurfum við að kíkja á, á hérna hvað fællinn heitir til þess að vita sem sagt hvort það var tvö þúsund og fimmtán eða tvö þúsund og fjórtán, þannig að hérna í þessu tilfelli þá eru gögnin dreifð út um mismunandi fæla. Og þessi mikilvæga breyta ártalið sjálft kemur bara fram í nafninu á fælnum þannig að þetta er annað dæmi þar sem við þurfum aðeins að taka til og í þessu tilfelli. Það er raunverulega bara að loop-a yfir allar mögulegar töflur, í þessu tilfelli, þessa tvo fæla sem við erum með og sameina gögnin og svo að færa þau aðeins til þannig að við séum með sem sagt hérna við erum með sem sagt hvar í röðinni það er, hversu algengt þetta var nafnið er, hversu oft það kom fyrir, hvort það sé karlkyns eða kvenkyns nafn og svo árið þannig að ef við myndum scroll-a niður í þessari töflu þá mundi bráðum byrja birtast hérna tvö þúsund og fimmtán í ár dálkinum. Ókei, hérna í Python notebook-inu er farið í gegnum sem sagt allt hérna allan kóðann á bak við þetta og ég ætla að gera það á eftir. En fyrst ætla ég að tala aðeins um hérna það sem heitir data preprocessing. Það er ekki nóg bara að að hérna möndla gögnin þannig að þau komi á svona ákveðið form sem ég gat dílað við heldur þurfum við líka að kíkja á gildin í töflunni okkar til að sjá hvort það sé eitthvað óeðlilegt við þau hvort það sé eitthvað sem við þurfum að laga. Þannig að af hverju þurfum við að að preprocess-a þessi gögn? Við þurfum kannski að finna eitthvað gott orð yfir að preprocessa, einhverjar hugmyndir? Undirbúa, undirbúa gögnin. Af hverju þurfum við að gera það? Nú eins og ég er búinn að nefna þá eru gögnin full af noise-i það er fullt af villum sem bara verða til við gagnaöflun, til dæmis að einhver sem er að skrái inn aldur skrifar inn óvart inn negatífan aldur eða kannski bætir óvart við einu núlli. Þann að einstaklingur sem er tuttugu ára er allt í einu orðin tvö hundruð ára. Og þetta eru bara náttlega mannleg mistök sem gerast enda þetta er ekki bara fólk þetta gerist líka bara í mælitækjum og alls konar þannig að þetta er svona eitthvað sem þurfum að hafa augun opin fyrir og að auki þá erum við með sem sagt svona inconsistency eins og við töluðum um með hérna USA áðan eða þá að kannski sumir setja inn núll í gæsalöppum í staðinn fyrir að hafa bara venjulegt núll eða bara autt þegar að þegar mælingin er núll og svo kannski eða einhvers konar könnun í gangi og fólk er spurt hvað það er með í laun? Þá vill það ekki gefa það upp þá og ertu bara með autt gildi í í þeim dálki. Og svo þegar þú ert að sameina töflur þegar þú ert merge-a töflur þá verða bara til tóm gildi það bara gerist og þess vegna verða NA og NaNs og bara sem sagt tómir reitir í töflunum okkar, já, og svo líka duplicate data eins og ég minntist á seinast held ég, að aldur og fæðingarár segir nákvæmlega það sama. Þetta er þær breytur sem hérna hafa nákvæmlega sömu upplýsingar að geyma, þannig að við þurfum líka að hafa hérna opin augun fyrir því að vera ekki með dálka sem eru með tvöföldum upplýsingum og svo hérna vil ég hamra á því að til þess að geta byggt gott módel þarf að leggja mikla vinnu í þetta þennan undirbúning gagnanna í þetta preprocessing, af því að ef við erum með gögn sem eru skítug þá verður módelið líka bara rangt. Og það er oft talað um hérna þetta garbage in garbage out ef þið setjið eitthvað sem er rusl inn í módelið ykkar þá bara fáið þið rusl út úr módelinu ykkar. Þannig að hafið þetta í huga, að að hérna ekki ekki gleyma þessu mikilvæga skrefi, þó að það taki ógeðslega langan tíma og sé hundleiðinlegt. Ég hef alveg verið þar, sko. En hérna það er ekkert skemmtilegt og en samt bráðnauðsynlegt eins og taka lýsi. Hérna, ókei, sem sagt þegar við erum að vinna með undirbúa gögnin okkar þá þurfum við byrja á því að díla við gögn sem vantar og þá spyr maður sig af hverju vantar gögnin? Getur náttúrlega bara verið að hérna bara mælingin sé ekki til staðar, til dæmis ef þú vilt vita hversu mikið einhver svikari svindlaði út úr tryggingafyrirtækinu, þá ef einstaklingurinn er ekki svikari þá náttúrulega er hann ekki búinn að svindla neitt og þá náttúrulega ertu bara með tómt þar eða í einhverri könnun einhver vill ekki gefa upp launin sín þá bara vantar það og svo, eins og ég sagði líka, að það verða til error-ar þegar þú ert að sameina gögn og þegar þú ert með missing values þá hefurðu sem sagt þrennt sem þú getur gert. Þú getur bara látið þetta vera eins og það er og sagt sem svo, ókei, það að þetta vanti það þýðir eitthvað og þá geturðu bara búið til sem sagt nýjan hérna dálk fyrir það sagt hérna þú veist einn dálkur sem heitir upplýsinga vantar og þá bara ertu með einn og núll þar til dæmis og þá veistu bara að ákveðnar upplýsingar vantar, ókei. Eða þú getur eytt út þeim röðum eða þeim dálkum þar sem vantar breytur, og þá er það bara eitthvað sem maður ákveður í bara hvert skipti, eins og til dæmis ef einhver er að svara könnun og hann ákveður bara að svara ekki ógeðslega mörgum spurningunum, þá kannski er sú mæling niðurstöðurnar frá þessum einstaklingi þær eru óáreiðanlegar kannski svaraði hann bara einni spurningu af tíu og þá kannski bara best að sleppa þeim alveg bara eyða honum út úr gögnunum eða þú ert með einhverja einhverja breytu sem að hérna rosalega fáir svöruðu þá mundirðu bara sleppa þeirri breytu líka bara eyða henni út úr gagnasafninu. En svo það sem er algengt að gera. Er sem sagt að replace-a þessi missing value en notið einhverja aðferð til þess að meta hvað ætti að koma þarna í staðinn. Og það sem maður þarf að passa sig á í þessu öllu saman er að vera sem sagt samkvæmur sjálfum sér, þegar maður er að díla við þessi gögn sem vantar og gera það alltaf eins í ákveðnum gagnasafni, ekki, sem sagt, þú veist, þú ert að greina einhver gögn og svo bara skiptirðu allt í einu um skoðun um það hvernig þú vilt díla við þessi gildi þú verður að gera það eins í öllu öllu verkefninu. Hérna sjáum við til dæmis dæmi það sem ég nefndi áðan þið sjáið til dæmis hérna í línu sex hvað munduð þið gera við þennan einstakling? Hann er með voða fáar upplýsingar. Myndum við fylla inn gildin hans eða myndum við gera eitthvað annað við hann? Eyða honum, er það ekki? Hann svaraði voðalega fáu. En hvað með hérna í í hérna hvað eigum við að segja? Í marital status? Hvað mundum við segja einstaklingur eitt sé út frá þessu? Hvað er líklegast að hann sé? [UNK] Single? Af hverju? Ef við horfum bara á þennan eina dálk þá sjáum við það að single kemur oftast fyrir þannig að það er líklegast að hann sé single. En svo náttlega getum við alveg flokkað þetta og séð miðað við aldur hvað er algengast að vera og þá tekið aldurinn hans til greina þegar við ákveðum hvað hann á að vera, en svona naive aðferðin mundi segja að að hann væri að hann væri single held ég. Ókei, og svo eins hérna með þennan dálk credit bureau score. Þið sjáið það eru bara þrír sem eru með eitthvað þar. Þannig að ef við ætlum að fara að fylla inn hérna með því að nota meðaltalið eða eitthvað, þá sjáum við það að allir þessir einstaklingar mundu hafa sama gildi sem þýðir það að þessi dálkur myndi ekki vera neitt voðalega hérna voðalega góður hann mundi ekki vera neitt voðalega representative þannig að þetta kannski bara dálkur sem væri ágætt, ágætt að eyða alveg út. Ókei, þannig að þegar við erum að replace-a þessi þessi hérna gildi sem vantar. Þá höfum við nokkrar nokkrar hérna leiðir. Þegar við erum með sem sagt samfelldar breytur þá er mjög algengt að setja inn annaðhvort meðaltalið eða miðgildið það er betra að nota miðgildi ef maður er með mikið af sem sagt outlier-um. En en það er bara svona já maður metur það bara svona fyrir hvert dæmi hvað maður hvað maður vill nota eða ef maður er með sem sagt, æi fyrirgefðu. Þannig að það var það sem við mundum gera hérna með með income-ið til dæmis mundu þið setja þar inn annaðhvort miðgildið eða meðaltalið. Af því að það er samfelld breyta. En svo erum við með categorical breytur og þá mundum við bara setja inn, eins og við gerðum hérna áðan, algengasta gildið. Einhverjar spurningar? Nei. Ókei, svo erum við, fyrirgefðu. Svo erum við outlier-a og það eru sem sagt svona mælingar sem eru, já, mjög fjarlægar hinum mælingunum er einhvers konar einhvern hátt öðruvísi og og hérna stundum þá náttlega erum við að reyna að finna svoleiðis hérna mælingar þar er kannski markmiðið okkar eins og til dæmis í svindli þegar við töluðum um þarna seinast að við viljum finna þessar mælingar sem eru extreme og öðruvísi en oft þá valda þessar mælingar bara skekkju í módelunum okkar. Og þess vegna viljum við finna þær og gera eitthvað við þær. Við viljum einhvern veginn henda þeim út eða laga þær til eða eitthvað og og hérna dæmi um sem sagt útlaga er til dæmis mælingar sem eru alveg alveg réttar, eins og til dæmis í fyrirtæki þar sem allir eru bara forritarar og eru með hérna hvað fimm hundruð þúsund á mánuði, segjum að við séum með tíu þannig og svo um einn hérna einn sem sagt yfir mann sem er með eina og hálfa milljón þá er hann miðað við alla þessa forritara hann er náttúrlega útlagi af því að hann er með miklu, miklu hærri laun. En þetta er samt alveg mæling sem að er í lagi. Hún er ekkert, hún er ekki ólögleg, hún bara bara er svona af því að hann er með hærri laun heldur en allir hinir. Og þá hérna sem sagt getur maður dílað við það einhvern veginn eða maður getur verið með mælingar sem eru bara ómögulegar eins og til dæmis negatífan aldur eða of háan aldur eða neikvæða þyngd eða þú veist einhver maður er sex metrar á hæð, eitthvað svoleiðis, það mundi vera sem sagt invalid mæling. En til þess að sjá þessa útlaga þá er oft gott að nota sem sagt myndræna framsetningu, annars vegar með einni breytu og hins vegar með fleiri en einum breytum eins og ég ætla að sýna ykkur hérna á næstu glæru. En en fyrst kannski með útlaganna að alveg eins og með gögnin sem vantar þá getur maður annaðhvort sem sagt eytt þeim út eða dílað einhvern veginn við það, bara fer eftir því hérna í hvert skipti hvað hentar best maður þarf bara að meta það í hvert sinn. En hérna sjáum við hvernig við getum reynt að finna útlaga. Hérna erum við með í sem sagt multivariate setting þar sem við erum með tvær breytur annars vegar innkomu og hins vegar aldur og þið sjáið til dæmis hérna að sem sagt það er einhver hérna sem er hvað sextíu og fjögurra ára og hann er með fjögur hundruð þúsund. Þetta gæti verið litið á sem útlagi og eins þarna þessi efsti sem er með hvað tuttugu og tveggja og hvað er þetta fjórar milljónir? Það gæti hérna verið kannski eitthvað óeðlilegt þar í gangi. En þessir útlagar hér maður hefði aldrei séð þá ef maður hefði bara skoðað innkomuna eða bara skoðað aldurinn. Af því að aldurinn er ekkert óeðlilegur og innkoman er ekkert óeðlileg. En saman þetta kannski óeðlilegt, þannig að í þessu tilfelli þá þurftum við að skoða þessar tvær breytur saman til þess að taka eftir þessum útlögum og svo hérna hins vegar til þess að finna þessa univariate útlaga bara með einni breytu, aldri hérna. Þá getum við gert svona histogram til dæmis og þá sjáum við að einn hérna á bilinu núll til fimm á meðan að næsti er er tuttugu þannig að þessi hérna er örugglega eitthvað skrítinn og þessi hérna er definately eitthvað skrítinn í dag, því enginn er hundrað og fimmtíu ára. Þá getum við hérna reynt að bara sjá í gögnunum hvað veldur þessu ákveðið og ákveðið hvort við eigum að taka þetta í burtu eða eða að díla þá díla við þá. Og eins og ég sagði til að díla við þá þá getum við, sem sagt ef við erum með útlaga sem eru ólöglegir þá lítum við þá eins og missing values og ákveðum hvort við ætlum að hafa þá með delete-a þeim eða replace-a og svo hins vegar, ef við erum með löglega útlaga þá notar maður eitthvað sem heitir truncation og þá erum við með nokkrar mismunandi aðferðir, sem sagt við erum truncation með héna z-score-um og með IQR og svo getur maður notað meira advanced aðferðir líka en ég ætla að tala um tvær af þessum aðferðum, annars vegar með z-score-um sem við töluðum um seinasta föstudag sem okkur til um það hversu mörg staðalfrávik mælingin er frá meðaltalinu. Þannig að ef þið ímyndið ykkur að einhver einhver mæling sé mjög mörgum staðalfrávikum frá meðaltalinu, þá er hún útlagi, af því hún er svo langt frá norminu. Þannig að það sem við gerum einfaldlega er að við reiknum z-score-in fyrir allar breyturnar í dálkinum og ef z-score-ið er minna en mínus þrír eða stærra en þrír það er bara svona þumalputtaregla, þá tökum við breytuna og bara færum hana inn að þessum mörkum. Já, þannig að maður býr til svona efri og neðri mörk sem allt þarf að vera inn fyrir og þetta er í notebook-inu líka sem ég ætla að fara í gegnum og svo erum við með outlier detection með hérna IQR eða interquartile range sem byggir á svona, svona boxplottum. Svona boxplott eru gjarnan notuð til þess að skoða dreifingu gagna. Þannig við reiknum fimm gildi út úr gögnunum okkar. Við erum með miðgildið, við erum með fyrsta og þriðja quartile, minimum og maxinum, maximum og þá getum við teiknað upp þessa hérna mynd þannig að þessi lína hér er miðgildið sem sagt fyrir neðan þetta er helmingurinn af gögnunum og fyrir ofan það er hinn helmingurinn. Þessi lína hér er Q einn, er sem sagt fyrsta quartile þannig að fyrir neðan það eru tuttugu og fimm prósent, og hinn sama hátt þá er þessi hérna lína Q þrír, þannig að fyrir ofan það er tuttugu og fimm prósent og svo er þetta bil hérna sem heitir interquartile range og svo teiknum við hérna þessar línur sem eru raunverulega einn og hálfur sinnum þetta IQR og þá erum við komin með þessi mörk og svo sjáum við það að þarna eru nokkrir punktar sem lenda fyrir utan mörkin. Of þá eru þeir útlagar og við dílum við þá á sama hátt og við gerðum í z-score-unum sem sagt ef eitthvað er fyrir neðan Q einn mínus einn og hálfur sinnum IQR þá er það útlagi og við færum hann inn fyrir. Og eins ef við erum fyrir ofan Q þrír plús einn komma eitt og hálft interquartile range þá færum við það inn fyrir mörkin. Ókei, og svo stundum þurfum við oft þurfum við að staðla gögnin okkar. Af því að margir af þessum algoritmum sem við notum þeir hérna er ekkert voðalega glaðir þegar gögnin eru á mismunandi skölum þetta á sérstaklega við um hérna support vector machines. Þær vilja að öll gögn séu á sama skala. Eins neural networks þau vilja líka að maður sé á sama skala þannig að þetta er bara ágætis venja að að sem sagt skala gögnin. Og þetta sem sagt snýst um það að færa öll gögnin yfir á sama skalan inn á sama range-ið. Þannig að til dæmis ef að við erum með, já, skóstærð sem er á bilinu þrjátíu og fimm til fjörutíu og sex til dæmis og svo erum við með hæð í sentimetrum, hún er á bilinu einn og fimmtíu og tveir og tíu segjum sem svo, þá eru þetta mjög mismunandi skalar en ef við skölum þetta þá fer það bæði inn á sama bilið. Og og hérna og hérna til dæmis líka innkoma á móti aldri þar ertu líka með mjög mismunandi skala kannski ertu með mörg hundruð þúsund í laun, en þú ert bara á bilinu tuttugu og þriggja til sextíu og fimm. Þannig að hérna þar þarf maður líka að skala. Og þá erum við með hérna tvo option-a það sem heitir min max scaling, þar sem að þú einfaldlega tekur hverja mælingu, dregur frá minnstu mælinguna í þeim dálki svo deilirðu með hérna mismuninum á stærsta og minnsta gildinu og þetta gerir það að verkum að breytan hún verður á bilinu núll og upp í einn það til dæmis þegar þú ert með með hérna laun þarna, þá í staðinn fyrir að vera á bilinu hundrað þúsund upp í eina milljón, þá ertu búinn að færa það þannig að það sé allt saman á bilinu núll upp í einn. Og hin aðferðin er að nota sem sagt z-score þar sem við bara stöðlum allar breyturnar í dálkinum. Ókei, og svo erum við með eitthvað sem er nauðsynlegt stundum líka það er að sem sagt transforma gögnin. Stundum þá líta lítur dreifing einhverrar breytu svona út. En algoritmarnir þeir díla miklu betur við eitthvað sem er svona normaldreift þannig að til þess að breyta þessu í þetta þá bara tökum við logran af þessu hér. Og þá sem sagt fáum við log normal dreifingunna, og þá lítur þetta svona meira út eins og normaldreifingin sem að hérna er oft betra að vinna með. Þannig að þið getið ímyndað ykkur það að hérna hafa lág gildi miklu meira vægi heldur en há gildi en hérna ekki. Það er svona pælingin. Ókei, hvernig lesum við inn gögn og út úr Python? Við erum með mismunandi köll til þess ef þið eruð með comma seperated values þá getið þið notað read csv og to csv, sem sagt fyrst að lesa inn gögnin, þetta seinna skilar þeim aftur út. Þetta er svona algengast að nota ef þið eruð að vinna með excel skjöl þá getið þið notað notað read excel eða to excel í staðinn. Þá, það er náttúrlega voðalega oft sem maður er með excel skjöl af því að fólk er svo mikið að vinna í excel. Og þá getur maður þetta þá bara að lesa þeir inn gögnin og allt lítur mjög fallega út. Svo getum við lesið inn JSON fæla ef að gögnin okkar eru sett upp á þann hátt og þá kemur þetta hérna voðalega fallega í í hérna í pandas, nei, fyrirgefðu, í JSON. Og eins HTML ef þið eruð með sem sagt HTML streng þá getið þið bara lesið hana beint og gögnin bara koma inn í Python eins og þau eru sem sagt á þessu svæði á þessu URL-i og svo eru þið með nokkra aðra eiginleika líka. Við erum með sem sagt HDF, við erum með SQL, við erum með SAS. Python og pandas ræður við þetta allt saman og kannski að lokum að hérna pickle það er sem sagt það sem er sem sagt raunverulega python format. Þannig að það er mjög gott að nota það þegar maður er að vinna bara í Python, það sem sagt hérna er mest compatible segjum sem svo. En alla vegana hérna ég ætla að leyfa ykkur að skoða þetta sjálf, eigum við ekki að taka fimm mínútur í pásu, og svo förum við í notebook-ið.