KNeighborsClassifier
Pyyhkäise näyttääksesi valikon
Kun luotiin lopullinen estimointilaite putkistoon, valittu malli oli KNeighborsClassifier. Tässä luvussa annetaan lyhyt selitys algoritmin toiminnasta.
Mallien toiminta ei ole tämän kurssin pääaihe, joten on täysin hyväksyttävää, jos jokin asia jää epäselväksi. Asiaa käsitellään tarkemmin muilla kursseilla, kuten Linear Regression with Python tai Classification with Python.
k-lähimmän naapurin menetelmä
k-NN ennustaa uuden havainnon luokan tarkastelemalla sen k lähintä opetusjoukon havaintoa.
KNeighborsClassifier toteuttaa tämän Scikit-learn-kirjastossa.
- Uudelle pisteelle etsitään k lähintä naapuria ominaisuuksien samankaltaisuuden perusteella.
- Yleisin luokka näiden joukossa tulee ennusteeksi.
k on hyperparametri (oletus = 5). Eri arvot muuttavat mallin toimintaa, joten k:n säätäminen on tärkeää.
KNeighborsClassifier metodissa .fit()
Toisin kuin monet muut algoritmit, KNeighborsClassifier tallentaa koulutusdatan.
Silti metodin .fit(X, y) kutsuminen on tarpeen, jotta malli tietää, mihin aineistoon viitataan ennustamisen aikana.
KNeighborsClassifier metodissa .predict()
Ennustamisen aikana luokittelija etsii jokaiselle havainnolle k lähintä naapuria. Visuaalisessa esimerkissä näkyy vain kaksi ominaisuutta; useampien ominaisuuksien lisääminen parantaa yleensä luokkien erottuvuutta ja ennustustarkkuutta.
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 sisällyttäminen auttaa todennäköisesti mallia erottamaan vihreät ja punaiset datapisteet paremmin, jolloin KNeighborsClassifier voi tehdä tarkempia ennusteita.
KNeighborsClassifier-koodiesimerkki
Luokittelijan luominen, kouluttaminen ja tarkkuuden tarkistaminen .score()-metodilla.
n_neighbors-argumentti määrittää k-arvon—kokeile sekä arvoja 5 että 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))
k=1 käyttäminen voi tuottaa täydellisen tarkkuuden, mutta tämä on harhaanjohtavaa, koska arviointi tehtiin opetusdatalla.
Todellisen suorituskyvyn mittaamiseksi mallia tulee aina testata näkemättömällä datalla.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme