Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele K-Naapuriluokitin | Mallintaminen
Koneoppimisen Perusteet Scikit-learnilla

bookK-Naapuriluokitin

Kun luotiin lopullinen estimointilaite putkistoon, valittu malli oli KNeighborsClassifier. Tässä luvussa annetaan lyhyt selitys siitä, miten algoritmi toimii.

Note
Huomio

Mallien toiminta ei ole tämän kurssin pääaihe, joten on hyväksyttävää, jos jokin asia tuntuu epäselvältä. Sitä käsitellään tarkemmin muissa kursseissa, kuten Linear Regression with Python tai Classification with Python.

k-lähimmän naapurin menetelmä

k-lähimmän naapurin (k-NN) on koneoppimisalgoritmi, joka ennustaa tuloksia tunnistamalla koulutusjoukon samankaltaisimmat havainnot.

KNeighborsClassifier on Scikit-learnin toteutus tästä algoritmista luokittelutehtäviin. Ennustusprosessi toimii seuraavasti:

  1. Uudelle havainnolle etsitään k lähintä koulutusaineiston havaintoa piirteiden samankaltaisuuden perusteella. Näitä kutsutaan naapureiksi.
  2. Määritetään yleisin luokka näiden k naapurin joukosta. Tämä luokka on uuden havainnon ennuste.

Parametri k määrittää huomioitavien naapureiden määrän. Oletuksena arvo on 5. Eri k-arvot voivat johtaa erilaisiin ennusteisiin, joten kyseessä on hyperparametri — parametri, joka valitaan ennen koulutusta ja vaikuttaa suoraan mallin toimintaan.

Eri k-arvojen kokeileminen ja parhaan suorituskyvyn tuottavan arvon valitseminen on nimeltään hyperparametrien viritys. Tämä prosessi on olennainen mallin optimoinnissa.

KNeighborsClassifier .fit()-vaiheessa

Toisin kuin useimmat koneoppimismallit, KNeighborsClassifier tallentaa vain opetusdatan koulutuksen aikana. Vaikka koulutus ei vie aikaa, .fit(X, y) -kutsun käyttäminen on pakollista, jotta malli muistaa opetusdatan.

KNeighborsClassifier .predict()-vaiheessa

Ennustettaessa KNeighborsClassifier etsii ahneesti jokaiselle uudelle havainnolle k lähintä naapuria.

Note
Huomio

Yllä olevissa gif-animaatioissa käytetään vain kahta ominaisuutta, 'body_mass_g' ja 'culmen_depth_mm', koska korkeamman ulottuvuuden kuvaajien visualisointi on haastavaa. Lisäominaisuuksien sisällyttäminen auttaa todennäköisesti mallia erottamaan vihreät ja punaiset datapisteet paremmin, jolloin KNeighborsClassifier pystyy tekemään tarkempia ennusteita.

KNeighborsClassifier-koodausesimerkki

Luo KNeighborsClassifier, kouluta se ja arvioi sen tarkkuus käyttämällä .score()-metodia. Datan .csv-tiedosto on jo esikäsitelty.

Naapureiden määrä (k) määritetään n_neighbors-argumentilla alustettaessa KNeighborsClassifier. Kokeile sekä oletusarvoa 5 että arvoa 1.

12345678910111213
import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
copy

Tulokset osoittavat korkean tarkkuuden, jopa täydellisen 1-lähimmän naapurin mallilla.

Nämä tulokset eivät kuitenkaan ole luotettavia, koska arviointi tehtiin koulutusdatalla—samalla datalla, jolla malli koulutettiin. Tässä tapauksessa malli vain ennustaa havaintoja, jotka se on jo nähnyt.

Mallin suorituskyky tulee arvioida datalla, jota se ei ole aiemmin kohdannut.

question mark

Miten KNeighborsClassifier tekee ennusteita uudelle havainnolle?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.13

bookK-Naapuriluokitin

Pyyhkäise näyttääksesi valikon

Kun luotiin lopullinen estimointilaite putkistoon, valittu malli oli KNeighborsClassifier. Tässä luvussa annetaan lyhyt selitys siitä, miten algoritmi toimii.

Note
Huomio

Mallien toiminta ei ole tämän kurssin pääaihe, joten on hyväksyttävää, jos jokin asia tuntuu epäselvältä. Sitä käsitellään tarkemmin muissa kursseissa, kuten Linear Regression with Python tai Classification with Python.

k-lähimmän naapurin menetelmä

k-lähimmän naapurin (k-NN) on koneoppimisalgoritmi, joka ennustaa tuloksia tunnistamalla koulutusjoukon samankaltaisimmat havainnot.

KNeighborsClassifier on Scikit-learnin toteutus tästä algoritmista luokittelutehtäviin. Ennustusprosessi toimii seuraavasti:

  1. Uudelle havainnolle etsitään k lähintä koulutusaineiston havaintoa piirteiden samankaltaisuuden perusteella. Näitä kutsutaan naapureiksi.
  2. Määritetään yleisin luokka näiden k naapurin joukosta. Tämä luokka on uuden havainnon ennuste.

Parametri k määrittää huomioitavien naapureiden määrän. Oletuksena arvo on 5. Eri k-arvot voivat johtaa erilaisiin ennusteisiin, joten kyseessä on hyperparametri — parametri, joka valitaan ennen koulutusta ja vaikuttaa suoraan mallin toimintaan.

Eri k-arvojen kokeileminen ja parhaan suorituskyvyn tuottavan arvon valitseminen on nimeltään hyperparametrien viritys. Tämä prosessi on olennainen mallin optimoinnissa.

KNeighborsClassifier .fit()-vaiheessa

Toisin kuin useimmat koneoppimismallit, KNeighborsClassifier tallentaa vain opetusdatan koulutuksen aikana. Vaikka koulutus ei vie aikaa, .fit(X, y) -kutsun käyttäminen on pakollista, jotta malli muistaa opetusdatan.

KNeighborsClassifier .predict()-vaiheessa

Ennustettaessa KNeighborsClassifier etsii ahneesti jokaiselle uudelle havainnolle k lähintä naapuria.

Note
Huomio

Yllä olevissa gif-animaatioissa käytetään vain kahta ominaisuutta, 'body_mass_g' ja 'culmen_depth_mm', koska korkeamman ulottuvuuden kuvaajien visualisointi on haastavaa. Lisäominaisuuksien sisällyttäminen auttaa todennäköisesti mallia erottamaan vihreät ja punaiset datapisteet paremmin, jolloin KNeighborsClassifier pystyy tekemään tarkempia ennusteita.

KNeighborsClassifier-koodausesimerkki

Luo KNeighborsClassifier, kouluta se ja arvioi sen tarkkuus käyttämällä .score()-metodia. Datan .csv-tiedosto on jo esikäsitelty.

Naapureiden määrä (k) määritetään n_neighbors-argumentilla alustettaessa KNeighborsClassifier. Kokeile sekä oletusarvoa 5 että arvoa 1.

12345678910111213
import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
copy

Tulokset osoittavat korkean tarkkuuden, jopa täydellisen 1-lähimmän naapurin mallilla.

Nämä tulokset eivät kuitenkaan ole luotettavia, koska arviointi tehtiin koulutusdatalla—samalla datalla, jolla malli koulutettiin. Tässä tapauksessa malli vain ennustaa havaintoja, jotka se on jo nähnyt.

Mallin suorituskyky tulee arvioida datalla, jota se ei ole aiemmin kohdannut.

question mark

Miten KNeighborsClassifier tekee ennusteita uudelle havainnolle?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2
some-alt