K-Naapuriluokitin
Kun pipelinen lopullinen estimointilaite luodaan, valittu malli oli KNeighborsClassifier
. Tässä luvussa annetaan lyhyt selitys algoritmin toiminnasta.
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:
- Uudelle havainnolle etsitään k lähintä koulutusaineiston havaintoa piirteiden samankaltaisuuden perusteella. Näitä kutsutaan naapureiksi.
- Määritetään yleisin luokka näistä k naapurista. Tämä luokka on uuden havainnon ennuste.
Parametri k määrittää huomioitavien naapureiden määrän. Oletusarvo 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 tarjoavan arvon valinta tunnetaan nimellä 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
Ennustuksen aikana KNeighborsClassifier
etsii ahneesti jokaiselle uudelle havainnolle k lähintä naapuria.
Yllä olevissa gifeissä käytetään vain kahta ominaisuutta, 'body_mass_g'
ja 'culmen_depth_mm'
, koska korkeamman ulottuvuuden kuvaajien visualisointi on haastavaa. Lisäominaisuuksien mukaan ottaminen auttaa todennäköisesti mallia erottamaan vihreät ja punaiset datapisteet paremmin, mikä mahdollistaa KNeighborsClassifier
:n tarkemmat ennusteet.
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.
12345678910111213import 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))
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—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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.13
K-Naapuriluokitin
Pyyhkäise näyttääksesi valikon
Kun pipelinen lopullinen estimointilaite luodaan, valittu malli oli KNeighborsClassifier
. Tässä luvussa annetaan lyhyt selitys algoritmin toiminnasta.
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:
- Uudelle havainnolle etsitään k lähintä koulutusaineiston havaintoa piirteiden samankaltaisuuden perusteella. Näitä kutsutaan naapureiksi.
- Määritetään yleisin luokka näistä k naapurista. Tämä luokka on uuden havainnon ennuste.
Parametri k määrittää huomioitavien naapureiden määrän. Oletusarvo 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 tarjoavan arvon valinta tunnetaan nimellä 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
Ennustuksen aikana KNeighborsClassifier
etsii ahneesti jokaiselle uudelle havainnolle k lähintä naapuria.
Yllä olevissa gifeissä käytetään vain kahta ominaisuutta, 'body_mass_g'
ja 'culmen_depth_mm'
, koska korkeamman ulottuvuuden kuvaajien visualisointi on haastavaa. Lisäominaisuuksien mukaan ottaminen auttaa todennäköisesti mallia erottamaan vihreät ja punaiset datapisteet paremmin, mikä mahdollistaa KNeighborsClassifier
:n tarkemmat ennusteet.
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.
12345678910111213import 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))
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—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.
Kiitos palautteestasi!