K-NN:n Toteuttaminen
KNeighborsClassifier
k-Lähimmän naapurin (k-Nearest Neighbors) toteuttaminen on varsin suoraviivaista. Tarvitsemme vain KNeighborsClassifier-luokan tuonnin ja käytön.
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()-metodilla:
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:
Sinun tulee laskea xˉ ja s 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 antamiaan arvioita 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.
123456789101112131415161718192021222324252627from 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)
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain why scaling is important for k-Nearest Neighbors?
What does the output of the prediction mean in this example?
How do I choose the best value for n_neighbors in KNeighborsClassifier?
Awesome!
Completion rate improved to 4.17
K-NN:n Toteuttaminen
Pyyhkäise näyttääksesi valikon
KNeighborsClassifier
k-Lähimmän naapurin (k-Nearest Neighbors) toteuttaminen on varsin suoraviivaista. Tarvitsemme vain KNeighborsClassifier-luokan tuonnin ja käytön.
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()-metodilla:
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:
Sinun tulee laskea xˉ ja s 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 antamiaan arvioita 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.
123456789101112131415161718192021222324252627from 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)
Kiitos palautteestasi!