Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Implementando k-NN | Classificador K-NN
Classificação com Python

bookImplementando k-NN

KNeighborsClassifier

A implementação do k-Nearest Neighbors é bastante direta. Basta importar e utilizar a classe KNeighborsClassifier.

Após importar a classe e criar um objeto da classe conforme abaixo:

# 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)

Pronto! Agora já é 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:

Você deve calcular xˉ\bar x (média) e ss (desvio padrão) no conjunto de treinamento utilizando o método .fit() ou .fit_transform(). Esta etapa garante que os parâmetros de escala sejam derivados dos dados de treinamento.

Quando houver um conjunto de teste para prever, é necessário utilizar o mesmo xˉ\bar x e ss para pré-processar esses dados usando .transform(). Essa consistência é fundamental, pois garante que os dados de teste sejam escalados da mesma forma que os dados de treinamento, mantendo a integridade das previsões do modelo.

# 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)

Se você utilizar xˉ\bar x e ss diferentes para o conjunto de treinamento e para o conjunto de teste, suas previsões provavelmente serão piores.

Exemplo

Vamos explorar um exemplo simples em que o objetivo é prever se uma pessoa irá gostar de Star Wars VI com base em suas avaliações para Star Wars IV e V. Os dados foram retirados de The Movies Dataset com pré-processamento adicional. Considera-se que uma pessoa gosta de Star Wars VI se ela atribuir uma nota maior que 4 (de um total de 5).

Após treinar nosso modelo, faremos previsões para duas pessoas do conjunto de teste. A primeira pessoa avaliou Star Wars IV e V com 5 e 5, respectivamente, enquanto a segunda avaliou com 4.5 e 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

Quais dos seguintes nomes de classes do scikit-learn são usados para implementar o classificador k-Nearest Neighbors e para escalar características ao preparar dados para k-NN?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 4.17

bookImplementando k-NN

Deslize para mostrar o menu

KNeighborsClassifier

A implementação do k-Nearest Neighbors é bastante direta. Basta importar e utilizar a classe KNeighborsClassifier.

Após importar a classe e criar um objeto da classe conforme abaixo:

# 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)

Pronto! Agora já é 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:

Você deve calcular xˉ\bar x (média) e ss (desvio padrão) no conjunto de treinamento utilizando o método .fit() ou .fit_transform(). Esta etapa garante que os parâmetros de escala sejam derivados dos dados de treinamento.

Quando houver um conjunto de teste para prever, é necessário utilizar o mesmo xˉ\bar x e ss para pré-processar esses dados usando .transform(). Essa consistência é fundamental, pois garante que os dados de teste sejam escalados da mesma forma que os dados de treinamento, mantendo a integridade das previsões do modelo.

# 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)

Se você utilizar xˉ\bar x e ss diferentes para o conjunto de treinamento e para o conjunto de teste, suas previsões provavelmente serão piores.

Exemplo

Vamos explorar um exemplo simples em que o objetivo é prever se uma pessoa irá gostar de Star Wars VI com base em suas avaliações para Star Wars IV e V. Os dados foram retirados de The Movies Dataset com pré-processamento adicional. Considera-se que uma pessoa gosta de Star Wars VI se ela atribuir uma nota maior que 4 (de um total de 5).

Após treinar nosso modelo, faremos previsões para duas pessoas do conjunto de teste. A primeira pessoa avaliou Star Wars IV e V com 5 e 5, respectivamente, enquanto a segunda avaliou com 4.5 e 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

Quais dos seguintes nomes de classes do scikit-learn são usados para implementar o classificador k-Nearest Neighbors e para escalar características ao preparar dados para k-NN?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4
some-alt