Implementering av k-NN
KNeighborsClassifier
Implementering av k-Nearest Neighbors er ganske rett frem. Det eneste som trengs er å importere og bruke klassen KNeighborsClassifier.
Konstruktør:
KNeighborsClassifier(n_neighbors = 5)n_neighbors– antall naboer (k). Standardverdi er 5;
Metoder:
fit(X, y)– Tilpass treningssettet;predict(X)– Prediker klassen for X;score(X, y)– Returnerer nøyaktigheten for X, y-settet.
Når du har importert klassen og opprettet et klasseobjekt slik:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Må du mate inn treningsdataene ved å bruke .fit()-metoden:
knn.fit(X_scaled, y)
Det er alt! Nå kan du predikere nye verdier.
y_pred = knn.predict(X_new_scaled)
Skalering av data
Det er imidlertid viktig å huske at dataene må skaleres. StandardScaler brukes ofte til dette formålet:
Konstruktør:
StandardScaler().
Metoder:
fit(X)– beregner xˉ og s for X;transform(X)– returnerer Xscaled ved bruk av xˉ,s fra.fit();fit_transform(X)–.fit(X)deretter.transform(X).
Du må beregne xˉ og s kun på treningssettet ved å bruke .fit() eller .fit_transform().
Bruk deretter .transform() på testsettet slik at begge settene skaleres identisk:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Å bruke ulike skaleringsverdier for trening og test svekker prediksjonene.
Eksempel
Vi forutsier om en person liker Star Wars VI ved å bruke deres vurderinger for Episode IV og V (fra The Movies Dataset).
Etter trening tester vi to brukere: én vurderte IV/V som 5 og 5, den andre som 4.5 og 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)
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 3.33
Implementering av k-NN
Sveip for å vise menyen
KNeighborsClassifier
Implementering av k-Nearest Neighbors er ganske rett frem. Det eneste som trengs er å importere og bruke klassen KNeighborsClassifier.
Konstruktør:
KNeighborsClassifier(n_neighbors = 5)n_neighbors– antall naboer (k). Standardverdi er 5;
Metoder:
fit(X, y)– Tilpass treningssettet;predict(X)– Prediker klassen for X;score(X, y)– Returnerer nøyaktigheten for X, y-settet.
Når du har importert klassen og opprettet et klasseobjekt slik:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Må du mate inn treningsdataene ved å bruke .fit()-metoden:
knn.fit(X_scaled, y)
Det er alt! Nå kan du predikere nye verdier.
y_pred = knn.predict(X_new_scaled)
Skalering av data
Det er imidlertid viktig å huske at dataene må skaleres. StandardScaler brukes ofte til dette formålet:
Konstruktør:
StandardScaler().
Metoder:
fit(X)– beregner xˉ og s for X;transform(X)– returnerer Xscaled ved bruk av xˉ,s fra.fit();fit_transform(X)–.fit(X)deretter.transform(X).
Du må beregne xˉ og s kun på treningssettet ved å bruke .fit() eller .fit_transform().
Bruk deretter .transform() på testsettet slik at begge settene skaleres identisk:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Å bruke ulike skaleringsverdier for trening og test svekker prediksjonene.
Eksempel
Vi forutsier om en person liker Star Wars VI ved å bruke deres vurderinger for Episode IV og V (fra The Movies Dataset).
Etter trening tester vi to brukere: én vurderte IV/V som 5 og 5, den andre som 4.5 og 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)
Takk for tilbakemeldingene dine!