Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele K-NN:n Toteuttaminen | K-NN-luokitin
Luokittelu Pythonilla

bookK-NN:n Toteuttaminen

KNeighborsClassifier

k-lähimmän naapurin algoritmin (k-Nearest Neighbors) toteutus on varsin suoraviivaista. Tarvitsemme vain tuoda ja käyttää KNeighborsClassifier-luokkaa.

Kun olet tuonut luokan ja luonut luokkaolion näin:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Sinun tulee syöttää sille opetusaineisto käyttämällä .fit()-metodia:

knn.fit(X_scaled, y)

Ja siinä kaikki! Nyt voit ennustaa uusia arvoja.

y_pred = knn.predict(X_new_scaled)

Datan skaalaus

Muista kuitenkin, että aineisto täytyy skaalata. StandardScaler on yleisesti käytetty tähän tarkoitukseen:

Sinun tulee laskea xˉ\bar x (keskiarvo) ja ss (keskihajonta) opetusjoukolle käyttämällä joko .fit()- tai .fit_transform()-metodia. Tämä vaihe varmistaa, että skaalausparametrit johdetaan opetusdatasta.

Kun sinulla on testijoukko, jota haluat ennustaa, sinun täytyy käyttää samaa xˉ\bar x ja ss tämän datan esikäsittelyyn käyttäen .transform(). Tämä johdonmukaisuus on tärkeää, koska se varmistaa, että testidata skaalataan samalla tavalla kuin opetusdata, mikä säilyttää mallin ennusteiden luotettavuuden.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Jos käytät eri xˉ\bar x ja ss opetus- ja testijoukolle, ennusteidesi tarkkuus todennäköisesti heikkenee.

Esimerkki

Tarkastellaan yksinkertaista esimerkkiä, jossa tavoitteena on ennustaa pitääkö henkilö Star Wars VI:stä perustuen hänen antamiinsa arvioihin Star Wars IV:stä ja V:stä. Data on otettu The Movies Dataset -aineistosta lisäesikäsittelyllä. Henkilön katsotaan pitävän Star Wars VI:stä, jos hän antaa sille arvosanan yli 4 (asteikolla 5).

Mallin koulutuksen jälkeen teemme ennusteet kahdelle testijoukon henkilölle. Ensimmäinen henkilö antaa Star Wars IV:lle ja V:lle arvosanat 5 ja 5, kun taas toinen henkilö antaa arvosanat 4.5 ja 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

Mitkä seuraavista scikit-learnin luokkanimistä käytetään k-lähimmän naapurin luokittelijan toteuttamiseen sekä piirteiden skaalaamiseen k-NN-menetelmää varten?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain what the output of the code means?

How do I choose the best value for n_neighbors in KNeighborsClassifier?

Why is it important to scale the data before using KNeighborsClassifier?

Awesome!

Completion rate improved to 4.17

bookK-NN:n Toteuttaminen

Pyyhkäise näyttääksesi valikon

KNeighborsClassifier

k-lähimmän naapurin algoritmin (k-Nearest Neighbors) toteutus on varsin suoraviivaista. Tarvitsemme vain tuoda ja käyttää KNeighborsClassifier-luokkaa.

Kun olet tuonut luokan ja luonut luokkaolion näin:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Sinun tulee syöttää sille opetusaineisto käyttämällä .fit()-metodia:

knn.fit(X_scaled, y)

Ja siinä kaikki! Nyt voit ennustaa uusia arvoja.

y_pred = knn.predict(X_new_scaled)

Datan skaalaus

Muista kuitenkin, että aineisto täytyy skaalata. StandardScaler on yleisesti käytetty tähän tarkoitukseen:

Sinun tulee laskea xˉ\bar x (keskiarvo) ja ss (keskihajonta) opetusjoukolle käyttämällä joko .fit()- tai .fit_transform()-metodia. Tämä vaihe varmistaa, että skaalausparametrit johdetaan opetusdatasta.

Kun sinulla on testijoukko, jota haluat ennustaa, sinun täytyy käyttää samaa xˉ\bar x ja ss tämän datan esikäsittelyyn käyttäen .transform(). Tämä johdonmukaisuus on tärkeää, koska se varmistaa, että testidata skaalataan samalla tavalla kuin opetusdata, mikä säilyttää mallin ennusteiden luotettavuuden.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Jos käytät eri xˉ\bar x ja ss opetus- ja testijoukolle, ennusteidesi tarkkuus todennäköisesti heikkenee.

Esimerkki

Tarkastellaan yksinkertaista esimerkkiä, jossa tavoitteena on ennustaa pitääkö henkilö Star Wars VI:stä perustuen hänen antamiinsa arvioihin Star Wars IV:stä ja V:stä. Data on otettu The Movies Dataset -aineistosta lisäesikäsittelyllä. Henkilön katsotaan pitävän Star Wars VI:stä, jos hän antaa sille arvosanan yli 4 (asteikolla 5).

Mallin koulutuksen jälkeen teemme ennusteet kahdelle testijoukon henkilölle. Ensimmäinen henkilö antaa Star Wars IV:lle ja V:lle arvosanat 5 ja 5, kun taas toinen henkilö antaa arvosanat 4.5 ja 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

Mitkä seuraavista scikit-learnin luokkanimistä käytetään k-lähimmän naapurin luokittelijan toteuttamiseen sekä piirteiden skaalaamiseen k-NN-menetelmää varten?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 4
some-alt