Implementando k-NN
KNeighborsClassifier
A implementação do k-Nearest Neighbors é bastante direta. Basta importar e utilizar a classe KNeighborsClassifier.
Construtor:
KNeighborsClassifier(n_neighbors = 5)n_neighbors– número de vizinhos (k). O valor padrão é 5;
Métodos:
fit(X, y)– Ajusta o conjunto de treinamento;predict(X)– Prediz a classe para X;score(X, y)– Retorna a acurácia para o conjunto X, y.
Após importar a classe e criar um objeto da classe desta forma:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
É necessário fornecer os dados de treinamento utilizando o método .fit():
knn.fit(X_scaled, y)
E pronto! Agora é possível prever novos valores.
y_pred = knn.predict(X_new_scaled)
Escalonamento dos dados
No entanto, lembre-se de que os dados devem ser escalonados. O StandardScaler é comumente utilizado para esse fim:
Construtor:
StandardScaler().
Métodos:
fit(X)– calcula xˉ e s para X;transform(X)– retorna Xscaled utilizando xˉ,s do.fit();fit_transform(X)– executa.fit(X)e depois.transform(X).
Você deve calcular xˉ e s apenas no conjunto de treinamento usando .fit() ou .fit_transform().
Em seguida, utilize .transform() no conjunto de teste para que ambos os conjuntos sejam escalados de forma idêntica:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Utilizar valores de escala diferentes para treino e teste prejudica as previsões.
Exemplo
Prevê-se se uma pessoa gosta de Star Wars VI utilizando suas avaliações para os Episódios IV e V (de The Movies Dataset).
Após o treinamento, testa-se dois usuários: um avaliou IV/V como 5 e 5, o outro como 4.5 e 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)
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 3.33
Implementando k-NN
Deslize para mostrar o menu
KNeighborsClassifier
A implementação do k-Nearest Neighbors é bastante direta. Basta importar e utilizar a classe KNeighborsClassifier.
Construtor:
KNeighborsClassifier(n_neighbors = 5)n_neighbors– número de vizinhos (k). O valor padrão é 5;
Métodos:
fit(X, y)– Ajusta o conjunto de treinamento;predict(X)– Prediz a classe para X;score(X, y)– Retorna a acurácia para o conjunto X, y.
Após importar a classe e criar um objeto da classe desta forma:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
É necessário fornecer os dados de treinamento utilizando o método .fit():
knn.fit(X_scaled, y)
E pronto! Agora é possível prever novos valores.
y_pred = knn.predict(X_new_scaled)
Escalonamento dos dados
No entanto, lembre-se de que os dados devem ser escalonados. O StandardScaler é comumente utilizado para esse fim:
Construtor:
StandardScaler().
Métodos:
fit(X)– calcula xˉ e s para X;transform(X)– retorna Xscaled utilizando xˉ,s do.fit();fit_transform(X)– executa.fit(X)e depois.transform(X).
Você deve calcular xˉ e s apenas no conjunto de treinamento usando .fit() ou .fit_transform().
Em seguida, utilize .transform() no conjunto de teste para que ambos os conjuntos sejam escalados de forma idêntica:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Utilizar valores de escala diferentes para treino e teste prejudica as previsões.
Exemplo
Prevê-se se uma pessoa gosta de Star Wars VI utilizando suas avaliações para os Episódios IV e V (de The Movies Dataset).
Após o treinamento, testa-se dois usuários: um avaliou IV/V como 5 e 5, o outro como 4.5 e 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)
Obrigado pelo seu feedback!