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 algoritmin toiminnasta.

Note
Huomio

Mallien toiminta ei ole tämän kurssin pääaihe, joten on hyväksyttävää, jos jokin asia jää epäselväksi. 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. Uuden havainnon kohdalla 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 kokeilu ja parhaan suorituskyvyn antavan arvon valinta on nimeltään hyperparametrien viritys. Tämä prosessi on olennainen mallin optimoinnissa.

KNeighborsClassifier .fit()-menettelyn aikana

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

KNeighborsClassifier .predict()-menettelyn aikana

Ennustuksen aikana 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-koodiesimerkki

Luo KNeighborsClassifier, kouluta se ja arvioi sen tarkkuus käyttämällä .score()-metodia. Datan sisältävä .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 opetusdatalla—eli 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

Suggested prompts:

Can you explain why evaluating on the training set is unreliable?

How should I properly evaluate the performance of a KNeighborsClassifier?

What is the difference between using 1 neighbor and 5 neighbors in k-NN?

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 algoritmin toiminnasta.

Note
Huomio

Mallien toiminta ei ole tämän kurssin pääaihe, joten on hyväksyttävää, jos jokin asia jää epäselväksi. 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. Uuden havainnon kohdalla 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 kokeilu ja parhaan suorituskyvyn antavan arvon valinta on nimeltään hyperparametrien viritys. Tämä prosessi on olennainen mallin optimoinnissa.

KNeighborsClassifier .fit()-menettelyn aikana

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

KNeighborsClassifier .predict()-menettelyn aikana

Ennustuksen aikana 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-koodiesimerkki

Luo KNeighborsClassifier, kouluta se ja arvioi sen tarkkuus käyttämällä .score()-metodia. Datan sisältävä .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 opetusdatalla—eli 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