Tässä demossa tarkastellaan, voidaanko maantietunneleissa käytettävien luminanssimittalaitteiden datan perusteella havaita mittalaitteen lasin likaantumista ja sen vaikutusta valaisun säätöön. Tarkasteltava aineisto on Fintrafficin keräämää dataa Lahden eteläisen kehätien Liipolan ja Patomäen maantietunneleista. Luminanssidataan yhdistetään sää- ja aurinkodatalla avoimista datalähteistä. https://www.geeksforgeeks.org/
Demon tavoitteena on muodostaa puhtaan lasin vertailutaso koneoppimista käyttäen. Malli ennustaa luminanssia ympäristöolosuhteisiin perustuen ja tätä verrataan todellisiin mittauksiin. Ennusteen ja todellisten arvojen erotusta vertaillaan likaantumisen havaitsemiseksi. Likaantunut lasi tulisi ilmi erotuksen selkeänä jatkuvana poikkeamana.
Sovelluksen tavoitteena on lisätä ennakoivaa kunnossapitoa osana vastuullisuustavoitteita. Ennakoivalla kunnossapidolla pyritään tekemään tietoperusteisia päätöksiä oikea aikaisesti.
Data
Lähtöaineistona käytettiin tietokannasta haettua luminanssimittausdataa. Alkuperäisessä CSV-tiedostossa neljän mittalaitteen data oli samassa sarakkeessa ja jokainen mittaustapahtuma omalla rivillään. Samalla aikaleimalla tehdyt mittaukset olivat erillisinä havaintoina. Dataa oli reilun neljän vuoden ajalta ja mittausväli oli viisi minuuttia.
Tapahtumamuotoinen taulukkorakenne soveltuu tiedon tallentamiseen, mutta ei sellaisenaan ole käytännöllinen data-analyysiä tai koneoppimista ajatellen. Kuvaajia piirtäessä tai signaalia vertailtaessa on yksinkertaisempaa viitata sarakkeeseen. Siksi datasta muodostettiin uusi taulukko, jossa mittalaitteiden data jaettiin omiin sarakkeisiin ja saman aikaleiman tapahtumat yhdeksi havainnoksi. Lisäksi datasta poistettiin mittaustapahtuman yksilöivä tunniste. Tässä vaiheessa korvattiin myös mittalaitteiden nimet julkaistavaa aineistoa varten muotoon, joka ei turhaan paljasta luottamuksellista tietoa.
Mittalaitteiden hälytys- ja huoltotiedot olivat erillisessä, rakenteeltaan vastaavanlaisessa CSV-tiedostossa. Tästä erotettiin mittalaitteiden pesutapahtumat, jotka liitettiin osaksi laitekohtaisia signaaleja. Näin luminanssimittauksia voitiin visualisoida pesutapahtumien kanssa, sillä tarkoituksena oli selvittää voiko pesua havaita mittausdatasta. Mittalaitteen lasia puhdistettiin tavallisesti kahden viikon välein, mutta datasta löytyi muutama pidempi pesuväli.
Menetelmää voidaan soveltaa laajasti kunnonvalvonnassa, jos prosessista on tallennettu aikasarjadataa. Mittadataan voidaan yhdistää tallennettua huoltodataa, kuten tieto puhdistuksesta, kalibroinnista, laitevaihdosta tai muusta huoltotoimenpiteestä. Analyysin tarkkuus riippuu kuitenkin tallennetun mittausdatan havaintovälistä. Tarkkoja havaintoja ei voi tehdä liian harvaan tallennetusta tai liikaa keskiarvoistetusta datasta.
Avoimien datalähteiden hyödyntäminen
Luminanssidatan voimakas vaihtelu osoitti, että analyysiin tarvittiin selitysvoimaa ympäristötekijöistä. Tähän hyödynnettiin avoimia datalähteitä. Sääaineistona käytettiin Ilmatieteenlaitoksen tuottamaa säädataa Lahden Sopenkorven havaintoasemalta. Asema sijaitsee alle neljän kilometrin säteellä tarkastelluista tunneleista. Sääaineiston havaintoväli oli 10 minuuttia, joten havaintoja täydennettiin sopivilla menetelmillä. Osaa havainnoista interpoloimalla ja osa edellisellä havainnolla täydentämällä.
Luminanssidatan kausittaista vaihtelua selittämään tarvittiin tieto auringon korkeudesta ja suunnasta. Tämä saatiin lisättyä leveys- ja pituuskoordinaattien avulla Python-kirjastolla pvlib, kun kartalta valittiin sopiva piste maantietunneleiden välistä. Luminanssidata ei ole ympärivuorokautista, kuten moni prosessista saatu data. Luminanssidataa voitiin nyt suodattaa perustuen auringon korkeuteen sekä virheellisiä mittausarvoja voitiin arvioida auringon perusteella.
Havaintojen täydentämistä voidaan soveltaa yleisesti, kun yhdistetään dataa eri resoluutiolla. Menetelmä tulee valita datan luonteen mukaan. Täydentämisen menetelmiä ovat interpolointi havaintojen keskiarvolla tai täyttäminen edellisellä tai seuraavalla havainnolla. Havaintojen alku- ja loppupäitä voidaan täyttää ekstrapoloimalla.
Pythonin kirjastoa pvlib käytetään erityisesti aurinkovoiman suunnitteluun. Dataa voidaan hyödyntää yleisesti ja kellonaikaan perustuvaan datan suodattamisen tai esimerkiksi päivä/yö-luokittelun sijaan voidaan käyttää tietoa auringon korkeudesta ja suunnasta.
Opetus- ja testidata
Koneoppimisessa voidaan yleisesti käyttää opetus- ja testidatan jakoon suhdetta 80:20. Joskus 70:30, tai 90:10 jos dataa on riittävä määrä. Luminanssidatan tapauksessa satunnainen jako ei olisi vastannut mallinnettavaa ilmiötä.
Mallin tavoitteena oli määrittää puhtaan linssin vertailutaso ympäristöolosuhteiden perusteella. Tämän vuoksi opetusdatan tuli edustaa tilaa pesutapahtuman jälkeen. Satunnaisella datan jaolla opetusdataan olisi päätynyt mittaustuloksia pesusyklin kaikista vaiheista.
Datan jakamisessa tehtiin oletus, että mittarin lasi pysyy puhtaana viisi vuorokautta pesun jälkeen. Nämä jaksot sisällytettiin opetusdataan ja loput aineistosta jätettiin testidataan. Viiden vuorokauden opetusjakso valittiin kokeellisesti ja tätä pienemmällä aineistolla havaittiin, että dataa on liian vähän, eikä malli yleisty riittävän hyvin sekä ennustevirhe kasvoi liian suureksi. Viiden vuorokauden oletus oli kompromissi, jolla saatiin riittävästi aineistoa koulutusdataan, mutta havaintojen katsottiin kuvaavan puhtaan linssin mittaustuloksia.
Tapahtumaperusteista aineiston jakoa voidaan hyödyntää muissa vastaavissa kunnonvalvonnan ja ennakoivan kunnossapidon sovelluksissa. Opetusdata muodostetaan tunnetun huolto- tai puhdistustapahtuman jälkeisistä jaksoista, joiden oletetaan edustavan normaaleja mittaustuloksia.
Tässä demossa tarkastellaan, voidaanko maantietunneleissa käytettävien luminanssimittalaitteiden datan perusteella havaita mittalaitteen lasin likaantumista ja sen vaikutusta valaisun säätöön. Tarkasteltava aineisto on Fintrafficin keräämää dataa Lahden eteläisen kehätien Liipolan ja Patomäen maantietunneleista. Luminanssidataan yhdistetään sää- ja aurinkodatalla avoimista datalähteistä. https://www.geeksforgeeks.org/
Demon tavoitteena on muodostaa puhtaan lasin vertailutaso koneoppimista käyttäen. Malli ennustaa luminanssia ympäristöolosuhteisiin perustuen ja tätä verrataan todellisiin mittauksiin. Ennusteen ja todellisten arvojen erotusta vertaillaan likaantumisen havaitsemiseksi. Likaantunut lasi tulisi ilmi erotuksen selkeänä jatkuvana poikkeamana.
Sovelluksen tavoitteena on lisätä ennakoivaa kunnossapitoa osana vastuullisuustavoitteita. Ennakoivalla kunnossapidolla pyritään tekemään tietoperusteisia päätöksiä oikea aikaisesti.
Data
Lähtöaineistona käytettiin tietokannasta haettua luminanssimittausdataa. Alkuperäisessä CSV-tiedostossa neljän mittalaitteen data oli samassa sarakkeessa ja jokainen mittaustapahtuma omalla rivillään. Samalla aikaleimalla tehdyt mittaukset olivat erillisinä havaintoina. Dataa oli reilun neljän vuoden ajalta ja mittausväli oli viisi minuuttia.
Tapahtumamuotoinen taulukkorakenne soveltuu tiedon tallentamiseen, mutta ei sellaisenaan ole käytännöllinen data-analyysiä tai koneoppimista ajatellen. Kuvaajia piirtäessä tai signaalia vertailtaessa on yksinkertaisempaa viitata sarakkeeseen. Siksi datasta muodostettiin uusi taulukko, jossa mittalaitteiden data jaettiin omiin sarakkeisiin ja saman aikaleiman tapahtumat yhdeksi havainnoksi. Lisäksi datasta poistettiin mittaustapahtuman yksilöivä tunniste. Tässä vaiheessa korvattiin myös mittalaitteiden nimet julkaistavaa aineistoa varten muotoon, joka ei turhaan paljasta luottamuksellista tietoa.
Mittalaitteiden hälytys- ja huoltotiedot olivat erillisessä, rakenteeltaan vastaavanlaisessa CSV-tiedostossa. Tästä erotettiin mittalaitteiden pesutapahtumat, jotka liitettiin osaksi laitekohtaisia signaaleja. Näin luminanssimittauksia voitiin visualisoida pesutapahtumien kanssa, sillä tarkoituksena oli selvittää voiko pesua havaita mittausdatasta. Mittalaitteen lasia puhdistettiin tavallisesti kahden viikon välein, mutta datasta löytyi muutama pidempi pesuväli.
Menetelmää voidaan soveltaa laajasti kunnonvalvonnassa, jos prosessista on tallennettu aikasarjadataa. Mittadataan voidaan yhdistää tallennettua huoltodataa, kuten tieto puhdistuksesta, kalibroinnista, laitevaihdosta tai muusta huoltotoimenpiteestä. Analyysin tarkkuus riippuu kuitenkin tallennetun mittausdatan havaintovälistä. Tarkkoja havaintoja ei voi tehdä liian harvaan tallennetusta tai liikaa keskiarvoistetusta datasta.
Avoimien datalähteiden hyödyntäminen
Luminanssidatan voimakas vaihtelu osoitti, että analyysiin tarvittiin selitysvoimaa ympäristötekijöistä. Tähän hyödynnettiin avoimia datalähteitä. Sääaineistona käytettiin Ilmatieteenlaitoksen tuottamaa säädataa Lahden Sopenkorven havaintoasemalta. Asema sijaitsee alle neljän kilometrin säteellä tarkastelluista tunneleista. Sääaineiston havaintoväli oli 10 minuuttia, joten havaintoja täydennettiin sopivilla menetelmillä. Osaa havainnoista interpoloimalla ja osa edellisellä havainnolla täydentämällä.
Luminanssidatan kausittaista vaihtelua selittämään tarvittiin tieto auringon korkeudesta ja suunnasta. Tämä saatiin lisättyä leveys- ja pituuskoordinaattien avulla Python-kirjastolla pvlib, kun kartalta valittiin sopiva piste maantietunneleiden välistä. Luminanssidata ei ole ympärivuorokautista, kuten moni prosessista saatu data. Luminanssidataa voitiin nyt suodattaa perustuen auringon korkeuteen sekä virheellisiä mittausarvoja voitiin arvioida auringon perusteella.
Havaintojen täydentämistä voidaan soveltaa yleisesti, kun yhdistetään dataa eri resoluutiolla. Menetelmä tulee valita datan luonteen mukaan. Täydentämisen menetelmiä ovat interpolointi havaintojen keskiarvolla tai täyttäminen edellisellä tai seuraavalla havainnolla. Havaintojen alku- ja loppupäitä voidaan täyttää ekstrapoloimalla.
Pythonin kirjastoa pvlib käytetään erityisesti aurinkovoiman suunnitteluun. Dataa voidaan hyödyntää yleisesti ja kellonaikaan perustuvaan datan suodattamisen tai esimerkiksi päivä/yö-luokittelun sijaan voidaan käyttää tietoa auringon korkeudesta ja suunnasta.
Opetus- ja testidata
Koneoppimisessa voidaan yleisesti käyttää opetus- ja testidatan jakoon suhdetta 80:20. Joskus 70:30, tai 90:10 jos dataa on riittävä määrä. Luminanssidatan tapauksessa satunnainen jako ei olisi vastannut mallinnettavaa ilmiötä.
Mallin tavoitteena oli määrittää puhtaan linssin vertailutaso ympäristöolosuhteiden perusteella. Tämän vuoksi opetusdatan tuli edustaa tilaa pesutapahtuman jälkeen. Satunnaisella datan jaolla opetusdataan olisi päätynyt mittaustuloksia pesusyklin kaikista vaiheista.
Datan jakamisessa tehtiin oletus, että mittarin lasi pysyy puhtaana viisi vuorokautta pesun jälkeen. Nämä jaksot sisällytettiin opetusdataan ja loput aineistosta jätettiin testidataan. Viiden vuorokauden opetusjakso valittiin kokeellisesti ja tätä pienemmällä aineistolla havaittiin, että dataa on liian vähän, eikä malli yleisty riittävän hyvin sekä ennustevirhe kasvoi liian suureksi. Viiden vuorokauden oletus oli kompromissi, jolla saatiin riittävästi aineistoa koulutusdataan, mutta havaintojen katsottiin kuvaavan puhtaan linssin mittaustuloksia.
Tapahtumaperusteista aineiston jakoa voidaan hyödyntää muissa vastaavissa kunnonvalvonnan ja ennakoivan kunnossapidon sovelluksissa. Opetusdata muodostetaan tunnetun huolto- tai puhdistustapahtuman jälkeisistä jaksoista, joiden oletetaan edustavan normaaleja mittaustuloksia.
Datan visualisointi
Visualisointi auttaa hahmottamaan datan jakaumia, ajallisia muutoksia, poikkeamia ja muuttujien välisiä yhteyksiä. Demon kuvaajat tuotettiin Pythonin Matplotlib- ja Seaborn-kirjastoilla.
Luminanssimittausten jakaumia tarkasteltiin histogrammeista ja tilastollisilla tunnusluvuilla, kuiten moodi, mediaani ja keskiarvo. Koska mittausarvoista merkittävä osa, mittarin mukaan noin 40 % oli nollaa sekä tietyllä aikavälillä esiintyi runsaasti kyllästyneitä arvoja, tarkasteltiin luminanssin arvoja L välillä 0<L<max.
Aikasarjakuvaajissa luminanssia verrattiin auringon korkeuteen ja pilvisyyteen. Pitkän aikavälin tarkastelu toi esiin vaihtelun vuodenajoittain sekä auringon korkeuden ja pilvisyyden yhteyden luminanssiarvoihin. Toisaalta aikasarjakuvaaja paljasti myös ongelman pilvisyyden ja luminanssiarvojen välillä. Samaan aikaan peräkkäisinä päivinä samalla pilvisyyden arvolla voitiin mitata huomattavan erilaisia luminanssin arvoja. Tämä havainto auttoi ennakoimaan koneoppimismallin tarkkuutta.
Luminanssimittausten ja piirteiden välisiä yhteyksiä tutkittiin lisäksi korrelaatiomatriisilla. Se kuvaa lineaarisen riippuvuuden voimakkuutta välillä -1…1. Lähellä nollaa arvojen välillä ei ole lineaarista yhteyttä, mutta yhteys voi olla epälineaarinen. Matriisia voidaan hyödyntää piirteiden valinnassa. Joidenkin algoritmien kohdalla on huomioitava myös kollineaarisuus, joka voidaan havaita korrelaatiomatriisin avulla.
Visualisointimenetelmiä voidaan hyödyntää yleisesti taulukkomuotoisen datan visualisointiin, jolloin datasta saadaan parempi kuva, kuin numeerisesta datasta.
Työn aluksi dataa on tärkeää visualisoida monipuolisesti, jotta saadaan kattava kuva sen sisällöstä. Visualisoinnin tavoitteena on tuoda esille sellaista tietoa, mitä ei voida havaita silmämääräisesti suuresta määrästä numeerista dataa. Visualisoinnilla voidaan havaita kausivaihtelu, löytää piirteiden välisiä riippuvuuksia ja tunnistaa jakaumat.
Yleisiä datan visualisoinnin menetelmiä ovat pisteparvikuvaaja (scatter), histogrammi (histogram), korrelaatiomatriisi (correlation matrix) ja laatikkojanakaavio (box plot). Aikasarjadatan tapauksessa mittaustulokset ajan funktiona. Aikasarjan kuvaajasta voidaan myös havaita mittausvirheen aiheuttamia poikkeamia, jos niitä ei muuten voi helposti havaita. Esimerkiksi luminanssimittauksista noin 40 % on nollaa, ja tarvitaan jokin ehto, kuten auringon korkeus, jolla verrata mittausvirheen aiheuttamia nolla-arvoja.
Pisteparvikuvaajalla ja korrelaatiomatriisilla voidaan havaita tutkittavan suureen ja piirteiden välisiä yhteyksiä. Histogrammilla voidaan havainnollistaa datan jakaumaa. Tämä on tärkeää, sillä jakaumaa voidaan muokata erilaisilla muunnoksilla ja parantaa koneoppimismallin tuloksia.
Algoritmit
Mallin valinta on datalähtöistä. Datasta ja tavoitteesta riippuen valitaan luokittelija, regressio, aikasarjaennuste tai klusterointi. Mallin valintaan vaikuttaa myös käytössä oleva laskentakapasiteetti. Esimerkiksi aikasarjadataan kohtalaisen tehokkaita puumallipohjaisia boosting-algoritmeja ovat LightGBM ja XGBoost. Niiden koulutus tapahtuu perustietokoneella melko nopeasti. (https://www.geeksforgeeks.org/).
Neuroverkot ja kielimallit ovat edellä mainittuja raskaampia ja vaativat enemmän laskentatehoa, tai vastaavasti enemmän aikaa. Saman aikasarjan kouluttaminen XGBoostilla voi viedä sekunneista kymmeniin, kun neuroverkolla siihen menee tunteja. Neuroverkot vaativat myös suuremman datamäärän.
Koneoppimisalgoritmeista saadaan tarkempaa tietoa niiden suorituskyvystä ja piirteiden tärkeydestä kuin neuroverkoista.
Mallin koulutus tarkoittaa koulutusfunktion kutsua. Datan pohjalta lasketaan ennustettavan signaalin ja piirteiden perusteella jokin ulostulo.
Koneoppimismallin suorituskykyä mittaa erilaiset virhearvot, kuten MAE (mean absolute error) tai RMSE (root mean squared error). R2-arvo ilmaisee mallin selitysastetta välillä 0…1. Se ilmaisee, kuinka suuri osa testidatasta selittää mallin vaihtelua. Kun mallin tarkkuus on lähellä yhtä, se voi viitata ylioppimiseen tai ristivalidoinnissa datan vuotoon. Ylioppiminen voi olla tarkka tietyllä datalla, mutta malli ei yleisty tuleviin, ennalta näkemättömiin arvoihin.
Regressiomalleissa ylioppiminen on tyypillinen ongelma, mutta sen välttämiseksi on joitakin menetelmiä, kuten ristivalidointi. Koulutusdatalla on merkitystä ristivalidointimenetelmän valintaan. K-Fold ja TimeSeriesSplit, joista jälkimmäinen säilyttää aikasarjadatan ajallisen järjestyksen.
Piirteet
Piirteet voivat olla suoraan datassa. Piirteitä voidaan tarvittaessa johtaa (feature engineering) taulukkoon lisää, kuten aikasarjan tapauksessa esimerkiksi tuntien ja kuukausien sini- ja kosiniarvot, joilla ilmaistaan koneoppimisalgoritmille, että tunnit 23 ja 01 ja joulu- ja tammikuu ovat lähellä toisiaan. (https://towardsdatascience.com/cyclical-encoding-an-alternative-to-one-hot-encoding-for-time-series-features-4db46248ebba/).
Lisäksi on tyypillistä hyödyntää viiveellisiä arvoja, eli lag-muuttujia ja liukuvaa keskiarvoa.
Tekoälyn käyttö koodin kirjoittamisen tukena
Projektissa käytettiin OpenAI:n ChatGPT-kielimallia koodin kirjoittamisen sekä siihen liittyvien ongelmien ratkaisemisen tukena. Sen lisäksi tekoälyn rooli oli toimia apuvälineenä erityisesti Python-koodin jäsentämisessä, funktioiden suunnittelussa, ohjelmointilogiikan hahmottamisessa ja vaihtoehtoisten toteutustapojen vertailussa. Kielimallin käyttäminen ohjelmoinnin tukena on nopeuttanut työntekoa; se on yksinkertaistanut toteutuksia ja auttanut muuttamaan erilaisia kokeiluja toistettavaksi kokonaisuuksiksi. Tutkimuksellinen vastuu, ohjelmiston arkkitehtuurin toteutus ja tulosten tulkinta säilyvät edelleen tekijällä.
Tekoäly toimi projektissa vuorovaikutteisena asiantuntija-apurina. Sen avulla ideat muuttuivat konkreettisiksi ja toimiviksi dataa käsitteleviksi ohjelmakoodeiksi. Tärkeimpiä hyötyjä on ollut
Koneoppiminen
Koneoppimisen tavoitteena demossa oli ennustaa puhtaan lasin vertailutaso sää-, aurinko- ja aikapiirteiden perusteella. Ennustetta verrattiin mitattuun luminanssiin, jolloin niiden erotuksesta tulkittiin mahdollisen likaantumisen aiheuttama mittausvääristymä.
Malliksi valittiin XGBoost-algoritmi. Se soveltuu aikasarjadatan ennustamiseen ja pystyy kuvaamaan myös epälineaarisia yhteyksiä. Malli on tehokas ja laskennallisesti kevyt. Koulutuksen jälkeen ennusteet ja metriikat tallennettiin myöhempää tarkastelua varten.
Mallin piirteinä käytettiin sää- ja aurinkodataa sekä ajan syklisiä arvoja. Ajan syklisillä arvoilla ilmaistaan algoritmille, että esimerkiksi kellonajat 23 ja 0 sekä kuukaudet 12 ja 1 ovat vierekkäin. Menetelmää käytetään yleisesti aikasarjadataa ennustaessa.
Alkuperäisten luminanssiarvojen ennustaminen osoittautui epätarkaksi, sillä mittaukset vaihtelevat suuresti. Mittauskohinaa suodatettiin laskemalla luminanssiarvoille liukuva keskiarvo 36 havainnon ikkunalla. Suodatus paransi ennustetarkkuutta merkittävästi. Suodatuksessa merkittävää on ikkunan koko ja on valittava datan resoluution mukaan. Liian pieni ikkuna ei poista kohinaa ja liian suuri keskiarvoistaa dataa liikaa.
Demon perusteella XGBoost-algoritmi soveltuu hyvin aikasarjadatan ennustamiseen. Kuitenkin käytössä olevien piirteiden ja ennustettavan signaalin välinen yhteys ei riitä niin tarkkaan ennusteeseen, että lasin likaantumista voitaisiin erottaa mittauskohinasta. Vaikka mallin selitysaste on korkea, ennustevirhe jää likaantumisen oletettua vaikutusta suuremmaksi. Tulokset osoittavat, että hyvä ennustetarkkuus ei välttämättä takaa mallin soveltuvuutta vaikutukseltaan vähäisen ilmiön tunnistamiseen.
Ohjelmistokehitys
Datan käsittely, visualisointi ja koneoppiminen toteutettiin Python-ohjelmointikielellä ja siihen liittyvillä kirjastoilla. Luminanssidataa tutkiessa nousi konkreettisesti esiin ohjelmiston rakenteen vaikutus. Ohjelmiston käytettävyyden kannalta se jaettiin uudelleenkäytettäviin paketteihin ja skripteihin, jotka käsittelevät dataa Pandas-datakehyksinä (DataFrames). Tiedostopolut ratkaistiin automaattisesti, jolloin ei syntynyt tiedostojen sijaintiriippuvuuksia ja ohjelmisto oli tarvittaessa siirrettävissä muihin järjestelmiin.
Kehitystyössä hyödynnettiin PyCharm-kehitysympäristöä sekä ChatGPT:tä ja Codexia. Generatiiviset kielimallit nopeuttivat erityisesti skriptien kirjoittamista ja olemassa olevan koodin täydentämistä. Merkittävää hyötyä saatiin myös ongelmatilanteissa. Työkalujen avulla voitiin paikantaa koodin syntaksivirheitä sekä kirjastojen yhteensopivuusongelmia nopeasti.
Kokemukset ja mitä tehtäisiin toisin ja muut huomiot
Nyt samaa sovellusta uudelleen tehtäessä panostettaisiin enemmän eksploratiiviseen data-analyysiin ennen mallinnusta. Data-analyysiä tehtäisi Python-skriptien sijaan Jupyter Notebookilla, missä koodin, tulosten ja pohdinnan esittäminen rinnakkain on helpompaa.
Sovellus kannattaa suunnitella niin, että dataa käsitellään ohjelmiston sisällä dataframe:ina. Tämä vähentää uusien tallennettavien tiedostojen määrää, mitä on hankala hallita.
Lähteet
AI vs. Machine Learning: How Do They Differ? | Google Cloud
AI vs. Machine Learning vs. Deep Learning vs. Neural Networks | IBM