Kirjat 2022

Päivittelen tätä sivua pikkuhiljaa vuoden myötä, kun kirjoja tulee luetuksi. Joskus näytin näitä oppilailleni, kun kannustin heitä lukemaan kirjoja. Laitan tämän artikkelin blogin alkuun noin puolivuosittain.

Marcus Chown, Äärettömyys kämmenellä. Tietokirja. 50 lyhyttä artikkelia luonnontieteistä. Monissa jutuissa on jonkinlainen hämmentävä totuus, vaikkapa se, että kehossani syntyy tänään noin 300 miljardia solua. Ihan luettava kirja, ei vaadi lukijalta sen kummempaa osaamista, toki jotkut jutut ovat aika hankalia ymmärtää, jos aihetta ei ole aiemmin opiskellut.

Tyrskyn myrsky! Johdatus kapteeni Haddockin manauksiin, toim. Pasi Heikura. Tietokirja. Haddockin kiroukset selitettynä aakkosjärjestyksessä. Tärkeä lähdeteos. Löysin pari uutta/vanhaa manausta tyyliin Juhanin Mullisaukko. Miksiköhän kirjassa ei ole ”Turskan perkeet”? Tästä saan paljon sanottavaa oppilailleni viimeisillä oppitunneillani.

Babylon Ashes, James A. Corey. Science fiction. Expanse-sarjan kuudes osa. Tässä kirjassa soditaan Vapaan laivaston ja  Maan liittolaisten välillä. Rocinanten miehistö uusine jäsenineen tekevät sankaritekoja ja paha saa palkkansa. Pakko lukea se seitsemäskin.

Tohtori Mustajärvi, otaksun. toim. Tina Finn, Pauli Mustajärvi. Tietokirja, äänikirja, lukija Pauli Mustajärvi. Pauli/Pate kertoo sanoittamistaan lauluista Popedalle ja omille soololevyilleen. Samalla käydään läpi pitkähkö ura. Tuli mieleen, että kyseessä on Jekyll/Hyde-tarina. ”Repe ja Lissu” tai ”Silirimpsis Hei” on kirjoitettu Patelle ja ”Veljeni Anton” Paulille. Tämä toimi äänikirjana, Pate osaa Ikurin murteensa.

Pääskyt talvehtivat järvenpohjassa, Jari Tervo. Historiallinen romaani. Luin tämän iPadistä, toimi ihan hyvin. Mikael Agricolan tarina, mukana myös Martti Luther, Kustaa Vaasa ja Iivana Julma. Kirjailijalle on jäänyt kakkapissavaihde päälle tätä kirjoitettaessa. En tykännyt.

Pienen hauen pyydystys, Juhani Karila. Romaani. Ehkä tulevaisuuden Lappiin sijoittuva myyttinen romaani. Pääosissa hauki, poliisi, kalastaja, näkki, peijooni, … Ihan sekopäisen hyvä kirja. Tykkäsin. Suosittelen.

Reijo Mäki, Sulhasmies. Dekkari. Kaksi Varekselle läheistä naista murhataan. Huumeiden salakuljetusta, moottoripyöräjengejä, unia, ryyppäämistä. Ihan hyvää koronaluettavaa.

Ei enää Eddy, Éduard Louis. Romaani. Nuoren pojan kasvutarina 90-luvun ranskalaisessa köyhässä perheessä. Rankkaa tekstiä kiusatuksi tulemisesta, oman seksuaalisuuden hakemista/löytämisestä, köyhyydestä, sukuraitteista, … Eipä juurikaan voi sanoa viihdyttäväksi kirjaksi. Luettava kyllä.

Anna-Leena Siikala, Itämerensuomalaisten mytologia. Tietokirja. Hieno ”tieteellinen” kirja näillä kulmakunnilla asuvien kansojen myyteistä ja mytrologioista. Opin taas lisää maailman syntytarinoista ja muinaisista jumalista.

Kalirur Rahman, Python Data Visualization Essentials Guide. Tietokirja. Hyvä opas datan visualisoinnin avuksi. Tämä kirja auttaa ymmärtämään, miten Pythonin Pandas, Matplotlib, Seaborn, Plotly ja Numpy -kirjastot toimivat kuvaajien tuottamisessa. Aika hyvä lähdeteos.


Kirjat 2021
Kirjat 2020
Kirjat 2019
Kirjat 2018
Kirjat 2017

Ylioppilaskoekorrelaatiomatriisi koodi Pythonilla

Julkaisin muutama päivä sitten tarinan ”Kevään 22 yo-kirjoitusten tuloksien korrelaatiomatriisi Pythonilla”. Tässä artikkelissa kerron, millaisen koodin avulla tuotin sen. Käytän ohjelmointiympäristönä Googlen Colabia. Colabin etuna verrattuna muihin Python ympäristöihin (IDLE, Spyder yms.) on se, että voin muokata koodia pilven kautta ja Colabissa on lähes kaikki Big Datan käsittelyyn käytettävät kirjastot ovat helposti kätettävissä. Samalla saan helpon pääsyn omiin tiedostoihini Google Drivessä ja voin jakaa koodin helposti.

Esitän koodin kuvankaappauksina Colabista ja kommentoin niitä tarinan edetessä. Linkki lopulliseen tiedostoon löytyy tarinan  lopusta.

Tähän käytetty tiedosto löytyy ytl:n sivulta https://www.ylioppilastutkinto.fi/tietopalvelut/tilastot/koulukohtaisia-tunnuslukuja
sieltä löytyy linkki myös oppiainekoodeihin ja miten tiedostojen nimet on koodattu.

Itse tiedosto on osoitteessa https://www.ylioppilastutkinto.fi/ext/data/FT2022KD3001.csv

kirjastoista

Python on siitä kiva, että lähes mihin tahansa koodausongelmiin löytyy apua kirjastoista. Tässä tarinassa käytän Pandas, Seaborn ja Matplotlib -kirjastoja. 

Pandas on luotu taulukoidun datan käsittelyyn, se ikään kuin tuo taulukkolaskennan rivit ja sarakkeet koodiin. Taulukon tietotyyppi Pandasissa on Dataframe, yleensä kirjallisuudessa käytetylle taulukolle annetaan nimi df. Kun käyttää Pandasia, niin kannattaa ajatella taulukot siten, että rivit ovat tilastoyksikköjä ja sarakkeet muuttujia, kuten ytl:n datassa.

Matplotlib-kirjaston avulla piirretetään kuvaajia. Seaborn on Matplotlibin laajennus. Sen avulla saan taulukon dataan värikoodauksen heatmap-funktion avulla. 

koodi kommentoituna, pandas taulukko

Rivit 8-10: ladataan kirjastot

Rivi 13: on Ytl:n datan osoite

Rivi 15: luetaan data Pandasin taulukkoon. Tätä koodatessa havaitsin, että Ytl:n taulukossa erotin on puolipiste, niinkuin usein meillä skandinaaveilla. 

Tässä vaiheessa taulukko näyttää tältä. Jos rivin 16 olisi korvannut rivillä

display(talukko)

niin siitä olisi tullut nätimmmän näköisen, taas opin uutta. En jaksa muuttaa tarinaan liitettyjä kuvankaappauksia.

Kuvasta nähdään, että 24911 ylioppilasta valmistui tänä keväänä. Aakkosissa (tai jollain muulla logiikalla) ensimmäinen Vieremän lukion oppilas oli tyttö ja sai yhteensä 18 puoltoääntä jne.

Alla display-funktiolla tuotetun kuvan vasenta reunaa.

Rivillä 19 luodaan taulukosta df-niminen DataFrame-taulukko.

Rivillä 22 poistetaan kuusi vasemmanpuoleista saraketta ja oikeanpuolisin (tutkintotyyppi).

Taulukko df on nyt tämän näköinen.

Rivi 27: Lasketaan rivien summat (axis = 0 on rivit ja axis = 1 on sarakkeet). Funktio count laskee lukumäärät ja list tuottaa luvuista helposti käsiteltävän listan.

Rivit 30-33: Lasketaan sellaiset sarakkeet, joissa on alle 100 kirjoittajaa. 

Rivi 37: Poistetaan sellaiset sarakkeet, joissa on poistettava indeksi.

Edellisten rivien printtaus tuottaa tällaista.

Rivi 41: Lasketaan korrelaatiomatriisi, min_periods kertoo kuinka monta paria vähintään pitää olla ja round desimaalien lukumäärän. Oletuksena syntyy neliömatriisi, mikä on minulle parempi. LibreOffice ja Excel tuottavat työkaluillaan vain kolmiomatriiseja.

Tämä näyttää hyvältä.

Rivi 45 ja 47: Pitää poistaa vasemmasta reunasta tuo yht-sarake yhteenlaskuja varten.

Rivit 50-51: Lasketaan selitysasteiden summa ja niiden aineiden summa, joilla korrelaatio on yli 0.6. Tässä näkyy Pandasin käyttökelpoisuus taulukoidun datan käsittelyssä.

Nyt taulukon oikeassa reunassa on 

Jos tässä vaiheessa haluaisin tallentaa datan csv-tiedostona omaan Driveeni, niin se toimisi rivillä

df.to_csv(/content/drive/MyDrive/Artikkelit/matriisi/yo.csv", encoding="utf-8”)

seaborn

Tämän kirjaston avulla saan taulukkoon värikoodauksen käyttämällä heatmap-tyyppistä kuvaajaa. Erilaisia väripaletteja on aika paljon, valitsin tähän diskreetin (ei jatkuvan) paletin.  Tämän tuottaminen vaati aika paljon yritystä ja erehdystä.

Rivi 58: Valitaan diskreetti väripaletti keltaisesta punaiseen, päädyin kokeilujen jälkeen tuohon kuuteen eri väriin, ne kuvaavat MAOLin taulukoissa olevaa tulkintaa korrelaatiokertoimista. En välitä negatiivista korrelaatikertoimista, niitä kun on niin vähän.

Rivi 59: Tuotetaan heatmap, annot näyttää oikean reunan palkkin, vmax, vmin ja vcenter kertovat rajoista, annot_kws on fontin koko ja title otsikko.

Rivi 62: Tässä määritetään kuvan koko.

Viimein saatiin tämä kuva.

Oikean reunan kielien poistaminen toimii lisäämällä väliin rivit.

Nyt kuva on tällainen

koodaamisesta

Vaikka yllä oleva voi vaikuttaa aika suoraviivaiselta ja jopa ymmärrettävältäkin, niin tuon tuottaminen tällaiselta aloittelijalta vaati aika paljon Googlettamista sekä yritystä ja erehdystä. Koska Colabissa voi helposti kokeilla erilaisia versioita, niin pitää muistaa kirjoittaa paljon kommentteja. Muuten versioiden hallinta menee mahdottomaksi.

Colab-tiedosto https://colab.research.google.com/drive/106rjIDEJWdn2ImdVtjAKzg_3df9fWhPx?usp=sharing


Koodaamisen oppiminen on helppoa, sen opettaminen on vaikeaa.

lähteitä

Korrelaatiomatriisi Pandasilla https://datagy.io/python-correlation-matrix/

Pandas dataframe-ohje https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.corr.html

Seaborn väripaletit https://seaborn.pydata.org/tutorial/color_palettes.html

Seaborn Heatmap, aika hyvä ohje https://www.geeksforgeeks.org/seaborn-heatmap-a-comprehensive-guide/

Kalibur Rahman, Python Data Visualization, Essential Guide, 2021, BpB

Kevään 22 yo-kirjoitusten tuloksien korrelaatiomatriisi Pythonilla


Tänä keväänä opiskelin Pythonia ja Pandas+Seaborn -kirjastoja sen verran, että pystyin tuottamaan korrelaatiomatriisin taas uudella tavalla. Big datan kanssa puuhasteleminen on kivaa, ongelmaksi tulee se mitä tietoa siitä kaivaa ja miten sen esittää. Matriisi osoittaa (minun mielestäni), että ei-matemaattiset reaaliaineet (bi, et, hi, ge, ff) ennustavat parhaiten ylioppilaiden kokonaismenestystä ylioppilaskokeessa.

edelliset tarinat aiheesta

Vuoden 19 ylioppilaskoematriisi LibreOfficella ​​https://mikkorahikka.blog/2020/01/20/korrelaatiomatriisi-libreofficella-ytln-datasta/

Vuoden 21 ylioppilaskoematriisi Excelillä https://mikkorahikka.blog/2021/05/28/kevaan-21-yo-kirjoitusten-korrelaatiomatriisi/

22 korrelaatiomatriisit

Tähän käytetty tiedosto löytyy ytl:n sivulta https://www.ylioppilastutkinto.fi/tietopalvelut/tilastot/koulukohtaisia-tunnuslukuja

ja itse tiedosto on osoitteessa https://www.ylioppilastutkinto.fi/ext/data/FT2022KD3001.csv

Loin Pythonilla taulukon, jossa oli vain oppilaiden puoltoäänien summa (”yht”) ja eri kirjoituksista saadut arvosanat (”a ” = 2, ”b” = 3, …, ”l”  = 7) . Poistin taulukosta sellaiset aineet, joita oli kirjoitettu alle 100 kertaa. Loin korrelaatiomatriisin siten, että mukaan laskettiin vain ne aineparit, jossa vähintään 20 oppilasta oli kirjoittanut kyseiset aineet.

Klikkaamalla kuvaan, saat sen avautumaan isompana uuteen välilehteen.

Ainekoodit ovat alla. En todellakaan muista mistä löysin nuo alunperin, kaipa ne ovat jossain YTL:n sivuilla.

Tein vielä toisen matriisin, poistin tästä osan oikean reunan kielistä. Tuota on ehkä hieman mukavampi katsella. Toki se hävittää kielten väliset korrelaatiot.

pari kommenttia

Miten näitä matriisejaa pitäisi tulkita. En oikeasti ole tilastotieteilijä, mutta muutamia kommentteja voin tähän raapaista. Käytän tässä tuota ylempää kuvaa.

Parhaiten ylioppilaskokeen puoltoäänien määrää ennustaa menestyminen biologiassa ja elämänkatsomustiedossa (r = 0.77).  Lähes sama korrelaatiokerroin oli historialla, ev-lut.uskonnolla, maantieteellä ja keskipitkällä ruotsilla ( r = 0.75). 

Laskemalla selitysasteiden summan eli korrelaatiokerreinten summan, sain podiumille biologian (Σr^2 = 9), psykologian (Σr^2 = 8.9) ja tasapisteillä historian ja keskipitkän ruotsin (Σr^2 = 8.5).

Sellaisia korrelaatioita, jotka olivat yli 0.6 oli eniten biologiassa (12) filosofiassa (11) ja uskonnossa ja maantieteessä (10).

Suurimmat aineiden väliset korrelaatiot olivat elämänkatsomustiedon ja historian välillä sekä elämänkatsomustiedon ja filosofian välillä (0.82)

Nämä tulokset ovat aika samantyyppisiä kuin vuosina 19 ja 21. Yo-kokeessa menestymistä ennustanee parhaiten menestyminen ei-matemaattisissa  reaaliaineissa. Tarkoittaako tämä sitä, että reaaliaineissa pärjäävät pärjäävät muissakin aineissa vai sitä, että yo-koe yleisesti mittaa reaaliaineissa opittuja tietoja ja taitoja enemmän kuin muita tietoja ja taitoja? En tiedä?


Kunhan opin Pythonia lisää, niin teen oikeasti vertailuja muutoksista aikaisempiin vuosiin. Itse koodin julkaisen lähipäivinä, kunhan saan koodin siivotuksi.