Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele K-NN:n Toteuttaminen | Osio
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
Ohjatun Oppimisen Perusteet

bookK-NN:n Toteuttaminen

KNeighborsClassifier

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

Konstruktori:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – naapureiden määrä (k). Oletusarvo on 5;

Menetelmät:

  • fit(X, y) – Sovittaa opetusdatan;
  • predict(X) – Ennustaa luokan X:lle;
  • score(X, y) – Palauttaa tarkkuuden X, y -joukolle.

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 opetusdata .fit()-menetelmällä:

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ä datan täytyy olla skaalattu. StandardScaler on yleisesti käytetty tähän tarkoitukseen:

Konstruktori:

  • StandardScaler().

Menetelmät:

  • fit(X) – laskee xˉ\bar{x} ja ss joukolle X;
  • transform(X) – palauttaa XscaledX_{\text{scaled}} käyttäen .fit()-menetelmästä saatuja xˉ,s\bar{x}, s;
  • fit_transform(X) – suorittaa ensin .fit(X), sitten .transform(X).

Sinun tulee laskea xˉ\bar x ja ss vain koulutusjoukosta käyttäen .fit() tai .fit_transform(). Käytä sitten .transform() testijoukkoon, jotta molemmat joukot skaalataan identtisesti:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Eri skaalausarvojen käyttäminen koulutus- ja testijoukolle heikentää ennusteiden tarkkuutta.

Esimerkki

Ennustetaan, pitääkö henkilö Star Wars VI -elokuvasta käyttäen heidän arvioitaan Episodeista IV ja V (lähde: The Movies Dataset). Koulutuksen jälkeen testataan kahta käyttäjää: toinen antoi IV/V-arvosanoiksi 5 ja 5, toinen 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 luokkien nimistä käytetään k-lähimmän naapurin luokittelijan toteuttamiseen sekä piirteiden skaalaamiseen dataa valmisteltaessa k-NN:ää varten?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 17

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

bookK-NN:n Toteuttaminen

Pyyhkäise näyttääksesi valikon

KNeighborsClassifier

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

Konstruktori:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – naapureiden määrä (k). Oletusarvo on 5;

Menetelmät:

  • fit(X, y) – Sovittaa opetusdatan;
  • predict(X) – Ennustaa luokan X:lle;
  • score(X, y) – Palauttaa tarkkuuden X, y -joukolle.

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 opetusdata .fit()-menetelmällä:

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ä datan täytyy olla skaalattu. StandardScaler on yleisesti käytetty tähän tarkoitukseen:

Konstruktori:

  • StandardScaler().

Menetelmät:

  • fit(X) – laskee xˉ\bar{x} ja ss joukolle X;
  • transform(X) – palauttaa XscaledX_{\text{scaled}} käyttäen .fit()-menetelmästä saatuja xˉ,s\bar{x}, s;
  • fit_transform(X) – suorittaa ensin .fit(X), sitten .transform(X).

Sinun tulee laskea xˉ\bar x ja ss vain koulutusjoukosta käyttäen .fit() tai .fit_transform(). Käytä sitten .transform() testijoukkoon, jotta molemmat joukot skaalataan identtisesti:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Eri skaalausarvojen käyttäminen koulutus- ja testijoukolle heikentää ennusteiden tarkkuutta.

Esimerkki

Ennustetaan, pitääkö henkilö Star Wars VI -elokuvasta käyttäen heidän arvioitaan Episodeista IV ja V (lähde: The Movies Dataset). Koulutuksen jälkeen testataan kahta käyttäjää: toinen antoi IV/V-arvosanoiksi 5 ja 5, toinen 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 luokkien nimistä käytetään k-lähimmän naapurin luokittelijan toteuttamiseen sekä piirteiden skaalaamiseen dataa valmisteltaessa k-NN:ää varten?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 17
some-alt